РЕДАКТИРОВАТЬ ТЕКСТ отключен на фигурах в защищенном листе VBA

У меня есть сильно защищенный лист, который использует VBA для динамического создания фигур. Формы создаются, разблокируются, затем лист восстанавливается. Вот фрагмент для формы текстового поля:

 Private Sub cmdTextBox_Click()
    Dim Shp As Shape
    Dim X, Y, Side As Single

    X = ActiveSheet.Range("D12").Left
    Y = ActiveSheet.Range("D12").Top

    ActiveSheet.Unprotect

    Set Shp = ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, X, Y, 250, 30)
    Shp.Name = "textbox_" & ActiveSheet.Shapes.Count

    Set Shp = ActiveSheet.Shapes("textbox_" & ActiveSheet.Shapes.Count)
    Shp.TextFrame.Characters.Font.Name = "Arial"
    Shp.TextFrame.Characters.Font.Size = "16"
    Shp.Fill.BackColor.RGB = RGB(255, 255, 0)
    Shp.Fill.Transparency = 0.2
    Shp.Line.Transparency = 1
    Shp.TextFrame.HorizontalAlignment = xlHAlignCenter
    Shp.TextFrame.VerticalAlignment = xlVAlignCenter
    Shp.TextFrame.Characters.Font.ColorIndex = 1
    Shp.TextFrame.Characters.Font.Bold = True
    Shp.TextFrame.Characters.Text = "Right-click to modify format"
    Shp.Locked = False

    ActiveSheet.Protect

  End Sub

Это позволяет пользователю (среди других инструментов создания фигур) создавать некоторые фигуры на листе диаграммы. Моя проблема в том, что защищенная рабочая книга (я хочу ограничить пользователя тем, что мои диалоговые окна позволяют им размещать / вводить для данных) отключает опцию "РЕДАКТИРОВАТЬ ТЕКСТ" любого типа фигуры. Как мне тоже

A) Включите опцию "РЕДАКТИРОВАНИЕ ТЕКСТА" для разблокированных фигур или... (предпочтительно)

B) Определить, что фигура была выбрана (каждая фигура создается с префиксом имени, таким как rect_ или circle_ для простой идентификации имени), чтобы узнать, когда снимать защиту листа, чтобы включить опцию "EDIT TEXT", а затем повторно защитить при отмене выбора или выборе чего-то еще? (чуть менее желательно)

1 ответ

Код, взятый из записанного макроса qick, защищающий лист с включенным "Редактировать объекты":

ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True

Но если вы зайдете в "Формат формы"> "Свойства", там должна быть опция "Блокировка текста". Это был бы мой предпочтительный вариант, так как параметр "Редактировать объекты" позволяет изменять их размер или удалять, это, конечно, зависит от того, что вы действительно хотите, чтобы пользователи могли с ним делать.

Другие вопросы по тегам