有些时候制作的表格,一些基础的设置数据可能不希望使用者看到并被修改掉,这个时候一般可能会选择把表格隐藏起来。
工作表的隐藏很简单,只需要右键点击工作表名称,然后点击隐藏就可以。
但是取消隐藏也差不多,右键点击后,选择某个工作表名称。
这种基本的操作,大多数人Excel用过一段时间的应该都会,所以保证不了其他人不会发现隐藏起来的表格。
其实Excel里还有一个深度的隐藏,这种隐藏后,右键点击取消隐藏是看不到的,这样应该就能瞒过大多数人了。
这个可以通过VBA代码编辑器里的属性窗口,设置工作表的Visible属性为xlSheetVeryHidden来实现,当然使用VBA来设置肯定就更为方便快捷了:
首先在customUI.xml中增加代码:
代码语言:javascript复制 <menu id="rbmenuShtHide" label="工作表隐藏 " size="large" imageMso="WindowSplit">
<button id="rbbtnVeryHideActiveSht" label="深度隐藏当前工作表" onAction="rbbtnVeryHideActiveSht"/>
<button id="rbbtnVeryHideExceptActiveSht" label="深度隐藏当前工作表之外工作表" onAction="rbbtnVeryHideExceptActiveSht"/>
<menuSeparator id="rbSepShtHidet01" title="================="/>
<button id="rbbtnUnHideAllSht" label="显示所有工作表" onAction="rbbtnUnHideAllSht"/>
</menu>
回调函数:
代码语言:javascript复制'工作表隐藏
Sub rbbtnVeryHideActiveSht(control As IRibbonControl)
Call MShtWk.VeryHideActiveSht
End Sub
Sub rbbtnVeryHideExceptActiveSht(control As IRibbonControl)
Call MShtWk.VeryHideExceptActiveSht
End Sub
Sub rbbtnUnHideAllSht(control As IRibbonControl)
Call MShtWk.UnHideAllSht
End Sub
函数实现:
代码语言:javascript复制Sub VeryHideActiveSht()
Dim i As Long
Dim sht As Worksheet
For Each sht In Worksheets
If sht.Visible = xlSheetVisible Then i = i 1
Next
If i > 1 Then
ActiveSheet.Visible = xlSheetVeryHidden
Else
MsgBox "至少要保证有一个可见工作表。", vbCritical
End If
End Sub
Sub VeryHideExceptActiveSht()
Dim sht As Worksheet
For Each sht In Worksheets
If sht.Name <> ActiveSheet.Name Then sht.Visible = xlSheetVeryHidden
Next
End Sub
Sub UnHideAllSht()
Dim sht As Worksheet
For Each sht In Worksheets
sht.Visible = xlSheetVisible
Next
End Sub
函数比较简单,就是去设置工作表的Visible属性即可。
在设置当前工作表隐藏的时候,需要判断工作簿是否还有其他的可见工作表,否则会报错。