2015-11-06 119 views
0

我在過去的幾個小時裏遇到了這個問題,我真的很感謝它的一些幫助。通過VBA使形狀不可見或在Excel中可見

基本上,我希望能夠根據用戶在用戶窗體上進行的選擇來隱藏/取消隱藏形狀。我已經將問題分解成一個非常簡單的例子。如果我插入一個所謂的「橢圓1」以片的形狀和運行該代碼:

子hideshape()

With ActiveSheet 

    .Shapes("Oval 1").Select 

    With Selection 

    .Visible = False 

    End With 


End With 

結束子

形狀消失,但是當運行此代碼

子unhideshape()

With ActiveSheet 

    .Shapes("Oval 1").Select 

    With Selection 

    .Visible = True 

    End With 


End With 

結束子

我得到一個錯誤「請求的形狀被鎖定爲選擇」

工作簿中沒有保護,我曾嘗試取消打勾鎖定,鎖定的形狀屬性的文本。

任何想法是什麼造成這一點。

感謝您幫助

回答

2

你不能Select隱藏對象。但是,根本不需要使用Select,通常不推薦。儘量簡單:

Sub HideShape() 
    ActiveSheet.Shapes("Oval 1").Visible = False 
End Sub 
Sub UnhideShape() 
    ActiveSheet.Shapes("Oval 1").Visible = True 
End Sub 
-1
Public HIDE As Boolean 

    Sub T_BUTTON() 
    ActiveSheet.Shapes("T 1").Visible = HIDE 
    If ActiveSheet.Shapes("T 1").Visible = False Then 
    HIDE = True 
    Else 
    HIDE = False 
    End If 

END SUB 
0

我解決了問題,這個代碼(橢圓形= 9類,從MsoAutoShapeType Enumeration (Office)):

Sub hide() 
s = ActiveSheet.Shapes.Count 
For i = 1 To s 
    If ActiveSheet.Shapes(i).Type = 9 Then ActiveSheet.Shapes(i).Visible = False 
Next i 
End Sub 

Sub unhide() 
s = ActiveSheet.Shapes.Count 
For i = 1 To s 
    If ActiveSheet.Shapes(i).Type = 9 Then ActiveSheet.Shapes(i).Visible = True 
Next i 
End Sub 

如果 「類型= 9」 是錯誤的,你可以找到類型代碼立即窗口(ctrl + G in VBA):

?ActiveSheet.Shapes("Oval 1").Type