【分享成果,随喜正能量】引擎利用后退的力量,引发更大的动能;空气经过压缩,更具爆破的威力。所谓"退一步想,海阔天空。"正可点破我们迷妄执着的盲点。。
《VBA高级应用30例》(10178985),是我推出的第十套教程,教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开,这套教程案例与理论结合,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中分发VBA程序,写好的程序可以升级。本套教程共三册三十个专题,今日内容是第5个专题“利用VBA制作一个转盘游戏”,今日讲解:第十套教程序言:阻止对Sub和Functions的直接访问
序言阻止对Sub和Functions的直接访问
在VBA的应用中,过程是使用各种Function和Sub进行构建的,每个Function和Sub都有特定的任务。一般情况下,授权任何用户访问这些核心功能是很方便的(甚至是建议的)。如下截图,通过在EXCEL界面按下Alt+F8 我们可以看到各个过程名称:
但是,我们也建议程序的构建者可以在以上视图中隐藏自己认为不能直接提供给用户的部分过程。事实上也如此,当应用程序中的所有Sub都显示给用户时,这的确有一定的风险。一些Sub很可能只有在其他Sub或函数中的适当位置调用时才能工作,因此将它们暴露给用户可能会导致严重的问题。为应用程序执行内务管理工作的Sub不属于此列表,因此应在视图中隐藏。所以,我们可以从列表中删除那些特定的过程。下面是控制对话框中显示内容的两种方法。
1 设置模块为private
通过添加文本:Option Private Module。在模块顶部添加上述语句后,该模块中的所有子模块都将从宏列表中删除。但是,仍然可以从该对话框启动它们,只需键入它们的名称并单击“运行”。
2 设置过程为Private
Private Sub mynzC()
MsgBox "Hello Word VBA!"
End Sub
使用此方法的缺点是,无法从包含Sub的模块外部访问Sub。当Sub仅从模块内部调用时,这没有问题。
本文提供的应用程序代码如下:
我们按下Alt+F8,此时对话框中仅仅显示了mynzA一个过程。
Ø本讲内容参考程序文件:高级应用00.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: