РЕДАКТИРОВАТЬ ТЕКСТ отключен на фигурах в защищенном листе 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
Но если вы зайдете в "Формат формы"> "Свойства", там должна быть опция "Блокировка текста". Это был бы мой предпочтительный вариант, так как параметр "Редактировать объекты" позволяет изменять их размер или удалять, это, конечно, зависит от того, что вы действительно хотите, чтобы пользователи могли с ним делать.