У меня есть сильно защищенный рабочий лист, который использует VBA для динамического создания фигур. Формы создаются, разблокируются, тогда рабочий лист воспроизводится. Вот фрагмент кода для формы текстового поля:EDIT TEXT отключен на фигурах в защищенном листе 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
Это позволяет пользователю (среди других инструментов создания формы) создать несколько фигур на диаграмме листа. Моя проблема в том, что защищенная рабочая тетрадь (я хочу ограничить пользователя тем, что мои диалоги позволяют им размещать/вводить данные) отключает опцию «EDIT TEXT» любого типа. Как ни
A) Включить «Редактирование текста» вариант для разблокированных форм или ... (предпочтительно)
B) Обнаружить, что форма была выбрана (каждая форма создается с именем префикса, как rect_ или circle_ для простой идентификации имени), чтобы узнать, когда следует снять защиту, чтобы включить параметр «ИЗМЕНИТЬ ТЕКСТ», а затем повторно защитить после выбора или выбора чего-то еще? (Чуть менее желательны)
Формы полностью разблокированы и единственные объекты, непосредственно редактируемые на листе. Им разрешается изменять размер, форматировать и перемещать. Единственное, что они не могут сделать, в чем я нуждаюсь, это прямое редактирование свойства textarea. Я мог бы сделать это с помощью диалогового окна, но я бы предпочел разрешить пользователям щелкнуть фигуру правой кнопкой мыши и использовать параметр «Редактировать текст». –