2014-09-05 74 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

相關問題