我有一个受到严密保护的工作表,它使用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标识),以便知道何时取消保护工作表以启用“编辑文本”选项然后取消选择或选择其他东西后重新保护? (略微不太可取)
答案 0 :(得分:0)
从qick录制的宏中获取的代码,保护启用了“编辑对象”的工作表:
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
但是,如果你去格式化形状>属性,那么应该有一个选项用于锁定文本。这将是我的首选选项,因为编辑对象选项允许调整大小或删除它们,这当然取决于您实际希望用户能够使用它做什么。