我们可以隐藏工作表,让其对最终用户不可见。如下图所示,在工作表标签Sheet1中单击右键,在弹出的菜单中选择“隐藏”,将工作表Sheet1隐藏。
上述操作由Excel宏录制器录制的代码如下:
Sub Macro1()
'
' Macro1 Macro
' 由完美Excel创建
'
'
Sheets('Sheet1').Select
ActiveWindow.SelectedSheets.Visible = False
End Sub
Visible属性用于设置工作表的可见状态,例如上面操作中设置工作表Sheet1的Visible属性为False,使其隐藏。接下来,如果运行下面的语句:
Sheets('Sheet1').Visible = True
工作表Sheet1将重新可见。
Visible属性也可返回指定工作表的可见状态。语句:
Sheets('Sheet1').Visible
返回的值表明工作表的可见状态。其返回值是一个xlSheetVisibility常量:
-1——xlSheetVisible,代表正常可见状态
0——xlSheetHidden,代表工作表隐藏状态,等同于在工作表标签右键菜单中选择“隐藏”命令;隐藏后,可在工作表标签右键菜单中选择“取消隐藏”来使恢复工作表可见。
2——xlSheetVeryHidden,代表工作表隐藏状态,此时在工作表标签右键菜单中不能取消隐藏。
注意,工作簿中必须至少有一个可见工作表。
可以在VBE编辑器的属性窗口设置相应工作表的可见状态,如下图所示。
当然,除本文开头设置Visible属性值为False或者True来使工作表隐藏/可见外,还可以设置上述常量值来使工作表隐藏或者可见。例如,下面的语句:
Worksheets('Sheet2').Visible = xlSheetVeryHidden
使工作表Sheet2隐藏,并且在Excel界面的工作表标签中单击右键时不能使其恢复可见。此时,必须在VBE界面设置该工作表的Visible属性或者使用代码设置Visible属性使该工作表可见。
示例1:统计工作簿中可见工作表数量
下面的程序将统计工作簿中可见工作表的数量并显示:
Sub CountVisibleWorksheets()
Dim i As Long
Dim lngNum As Long
lngNum = 0
'遍历工作表
For i = 1 To Sheets.Count
'如果工作表可见则统计
If Sheets(i).Visible =xlSheetVisible Then
lngNum = lngNum 1
End If
Next
MsgBox '工作簿中可见工作表的数量是:' & lngNum
End Sub
对于默认带有3个工作表的工作簿,如果使用上文中的代码将工作表Sheet2隐藏后,统计的可见工作表数为:
可以将上述代码转换为通用的函数过程,供其它过程在需要时调用:
'统计工作簿中所有可见工作表的数量
Function VisibleSheetsNum() As Long
Dim i As Long
Dim lngNum As Long
lngNum = 0
'遍历工作表
For i = 1 To Sheets.Count
'如果工作表可见则统计
If Sheets(i).Visible =xlSheetVisible Then
lngNum = lngNum 1
End If
Next
VisibleSheetsNum = lngNum
End Function
示例2:隐藏指定的工作表
下面的代码将隐藏指定的工作表,并指定了隐藏方式。
Sub HideWorksheet(strName As String, blnVeryHidden As Boolean)
'如果blnVeryHidden值为True,则深度隐藏工作表
If blnVeryHidden Then
Worksheets(strName).Visible = xlSheetVeryHidden
Else
Worksheets(strName).Visible= xlSheetHidden
End If
End Sub
下面的语句代码调用HideWorksheet过程,隐藏工作表Sheet1:
HideWorksheet 'Sheet1', True
在隐藏指定的工作表之前,我们可以使用《Excel VBA解读(69):工作表名称——Name属性》中示例4:检查工作表是否已存在来检查指定名称的工作表是否存在,然后进行下一步操作。
示例3:使用工作簿中的工作表全部可见
有时,工作簿中有多个隐藏的工作表,可以遍历工作表,使所有工作表都可见。
下面的代码取消隐藏工作簿中的所有工作表:
Sub UnhideAllWorksheets()
Dim ws As Worksheet
For Each ws In Worksheets
ws.Visible =xlSheetVisible
Next ws
End Sub
本文属原创文章,转载请联系我(xhdsxfjy@163.com)或者注明出处。
欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。
联系客服