乐于分享
好东西不私藏

定制你自己的Excel功能区-进阶玩法:操纵控件的显示/隐藏

定制你自己的Excel功能区-进阶玩法:操纵控件的显示/隐藏
标题可能不容易理解,还是看视频吧。
已关注
关注
重播 分享
用处:可以限制一些自定义程序的误点击,误操作。虽然VBA的脆皮加密机制不堪一击,但也算聊胜于无吧。
下面看看具体实现方法,先XML:
主要用到了一个开关按钮。
<customUIxmlns="http://schemas.microsoft.com/office/2009/07/customui"onLoad="AAload">	<ribbonstartFromScratch="false">		<tabs>			<tabid="customTab"label="Custom Tab">				<groupid="customGroup1"label="组1">                                     <toggleButtonid="tog1"label="启用高级功能"size="large"imageMso="HappyFace"getPressed="TogPres"onAction="TogSwitch"/>				</group>				<groupid="customGroup2"label="高级功能"getVisible="AAvis">					<buttonid="button1"label="功能1"size="large"/>					<buttonid="button2"label="功能2"size="large"/>					<buttonid="button3"label="功能3"size="large"/>					<buttonid="button4"label="功能4"size="large"/>					<buttonid="button5"label="功能5"size="large"/>				</group>			</tab>		</tabs>	</ribbon></customUI>
Excel中对应代码:
Private AArib As IRibbonUIPrivate Const PassCode As String = "ABCDEFG"Private ShowUI As Boolean'Callback for customUI.onLoadSub AAload(ribbon As IRibbonUI)    Set AArib = ribbonEnd Sub'Callback for tog1 getPressed,开关按钮的开/关状态,加载界面时会执行此程序Sub TogPres(control As IRibbonControl, ByRef returnedVal)    returnedVal = ShowUIEnd Sub'Callback for tog1 onAction,点击开关按钮执行程序Sub TogSwitch(control As IRibbonControl, pressed As Boolean)    If pressed Then '本次点击是打开        If InputBox("请输入密码开启高级功能:") = PassCode Then            ShowUI = True        Else            MsgBox "密码错误!", vbCritical        End If    Else '本次点击是打开        ShowUI = False    End If    AArib.Invalidate '使界面失效并重新加载End Sub'Callback for customGroup2 getVisible,控制目标组显示与否,加载界面时会执行此程序Sub AAvis(control As IRibbonControl, ByRef returnedVal)    returnedVal = ShowUIEnd Sub
需确保开关按钮的开/关状态和选项卡目标组的显示/隐藏状态同步,还有就是每次点击开关按钮,都要刷新一遍界面,不然看不到正确的效果。