2014-09-05 81 views
0

我有一个使用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)使能“EDIT TEXT”选项解锁形状或...(优选的)

B)检测是否有形状已被选择(每个形状与名称前缀等生成rect_或circle_以方便识别名称),以便知道何时解除表单以启用“编辑文本”选项,然后在取消选择或选择其他内容时重新进行保护? (略少渴望)从录制宏qick采取

回答

0

代码,保护与“编辑对象”片启用:

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

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

+0

形状完全解锁,并且可以在表单上直接编辑唯一的对象。他们将被允许调整大小,格式化和移动。他们不能做的唯一事情就是直接编辑textarea属性。我可以用对话窗口来做,但我更愿意允许用户右键单击形状并使用“编辑文本”选项。 – 2014-09-05 10:25:23

相关问题