2014-09-05 3 views
0

У меня есть сильно защищенный рабочий лист, который использует 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_ для простой идентификации имени), чтобы узнать, когда следует снять защиту, чтобы включить параметр «ИЗМЕНИТЬ ТЕКСТ», а затем повторно защитить после выбора или выбора чего-то еще? (Чуть менее желательны)

ответ

0

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

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

Но, если вы идете Format Shape> Свойства вместо этого должна быть возможность там для Lock Text. Это был бы мой предпочтительный вариант, так как опция «Редактировать объекты» позволяет изменять или удалять их, это, конечно, зависит от того, что вы на самом деле хотите, чтобы пользователи могли с этим справиться.

+0

Формы полностью разблокированы и единственные объекты, непосредственно редактируемые на листе. Им разрешается изменять размер, форматировать и перемещать. Единственное, что они не могут сделать, в чем я нуждаюсь, это прямое редактирование свойства textarea. Я мог бы сделать это с помощью диалогового окна, но я бы предпочел разрешить пользователям щелкнуть фигуру правой кнопкой мыши и использовать параметр «Редактировать текст». –

Смежные вопросы