在受保护的VBA工作表中的形状上禁用了编辑文本

时间:2014-09-05 05:04:30

标签: excel vba shapes

我有一个受到严密保护的工作表,它使用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_创建,以便于.name标识),以便知道何时取消保护工作表以启用“编辑文本”选项然后取消选择或选择其他东西后重新保护? (略微不太可取)

1 个答案:

答案 0 :(得分:0)

从qick录制的宏中获取的代码,保护启用了“编辑对象”的工作表:

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

但是,如果你去格式化形状>属性,那么应该有一个选项用于锁定文本。这将是我的首选选项,因为编辑对象选项允许调整大小或删除它们,这当然取决于您实际希望用户能够使用它做什么。