2016-06-09 177 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 ... 

又一个取相同的想法,以减少打字:)