2016-06-09 173 views
1

我試圖創建一個可點擊的切換按鈕,隱藏一年的數據,如果當前未隱藏,並且隱藏它,如果它隱藏。我知道這個語法是不正確的,但我不知道如何使它工作。任何幫助,將不勝感激。使用VBA if語句用按鈕隱藏/取消隱藏列

Sub Hide_2012() 
Dim Yr2012 As Range 
    Set Yr2012 = ThisWorkbook.Worksheets("Open Jobs Calculations").Range("AI:AT") 

If Yr2012.Visible = False Then 
    Yr2012.Visible = True 
Else If Yr2012.Visible = True Then 
    Yr2012.Visible = False 
End If 
+0

嘗試與'.Visible'而不是'。隱藏' – Dave

+1

缺少'如果結束if'。另外,你確定你想要整個專欄嗎?編輯:'然後'在錯誤的線.... – findwindow

+0

@Dave我仍然得到整個事情的語法錯誤。 – TonyP

回答

6

這適用於我。顯然hidden只適用於entire columns。每斯科特的評論

Dim Yr2012 As Range 
Set Yr2012 = ThisWorkbook.WorkSheets("Open Jobs Calculations").Range("A1:B10") 'change range 

If Yr2012.EntireColumn.Hidden = False Then 
    Yr2012.EntireColumn.Hidden = True 
ElseIf Yr2012.EntireColumn.Hidden = True Then 
    Yr2012.EntireColumn.Hidden = False 
End If 

編輯:

Yr2012.EntireColumn.Hidden = Not Yr2012.EntireColumn.Hidden 

更優雅。

+0

完美!謝謝! – TonyP

+0

不客氣。 – findwindow

+4

我想你可以用這行代替IF語句'Yr2012.EntireColumn.Hidden = Not Yr2012.EntireColumn.Hidden'我想,沒有測試過。 –

0

@ FindWindow函數的回答此修改爲我工作:

Set Yr2012 = ThisWorkbook.Worksheets("Open Jobs Calculations").Columns("AI:AT") ' <- (ie, set range to the desired columns) 

,那麼你仍然可以參考 「Yr2012」 的範圍,而無需 「.EntireColumn」:

If Yr2012.Hidden = False Then ... 

又一個取相同的想法,以減少打字:)