L罗乐 / VBA / Excel VBA解读(72):隐藏工作表——Visi...

分享

   

Excel VBA解读(72):隐藏工作表——Visible属性

2017-08-07  L罗乐

 

我们可以隐藏工作表,让其对最终用户不可见。如下图所示,在工作表标签Sheet1中单击右键,在弹出的菜单中选择“隐藏”,将工作表Sheet1隐藏。


上述操作由Excel宏录制器录制的代码如下:

Sub Macro1()

'

' Macro1 Macro

' 由完美Excel创建

'

 

'

   Sheets('Sheet1').Select

   ActiveWindow.SelectedSheets.Visible = False

End Sub

 

Visible属性用于设置工作表的可见状态,例如上面操作中设置工作表Sheet1Visible属性为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)或者注明出处。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。

    来自: L罗乐 > 《VBA》

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多
    喜欢该文的人也喜欢 更多

    ×
    ×

    ¥.00

    微信或支付宝扫码支付:

    开通即同意《个图VIP服务协议》

    全部>>