【Excel VBA】Private sub

本文介绍了VBA中PrivateSub与PublicSub的区别及调用方式。PrivateSub仅能在本模块内调用,而PublicSub可跨模块调用。若子程序位于Sheet表代码中,则需通过特定语法进行调用,并且要求被调用程序必须为Public属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Private sub

在这里插入图片描述

Private sub 表示私有程序,只能在本模块被调用
sub 等同于 Public sub,表示公用程序,可以被其他模块调用
特殊情况:
如果sub放在sheet表的代码中,无论 private 或 Public,都不能被其他模块直接调用
要调用其他sheet的sub,只能用 . 号调用,如:调用sheet2的程序 bb() ,使用语句:
sheet2.bb
并且,bb程序必须为 Public

Call sub from another sub
在这里插入图片描述
在call private sub时,也要赋值argument(如果private sub要求)。在上面的例子中,Private sub要求的argument分别是Getvalue, myPercent,在调用时,使用了main sub中已定义的两个variables: myValue和p。

Variables的数据类型要一致
在这里插入图片描述
如果p的value不是number, 则使用1代替 => myCalc myValue,1

VBA中调试 `Private Sub Worksheet_Change(ByVal Target As Range)` 这样的工作表事件代码需要一些特殊的技巧,因为这类过程是由Excel内部触发的,无法直接通过F8键逐步运行常规宏的方式来测试。以下是几种常用的调试方法: ### 1. 使用断点 - 打开VBA编辑器,在 `Worksheet_Change` 程序段落前点击左侧空白处设置一个断点(会出现红点)。然后回到Excel界面执行引发此事件的操作(比如更改单元格内容),程序会停在你设下的断点上,这时你可以利用即时窗口查看变量值、检查条件表达式的结果等。 ### 2. 借助MsgBox消息框显示关键信息 ```vba Private Sub Worksheet_Change(ByVal Target As Range) MsgBox "变更发生:" & Target.Address ' 其他逻辑处理... End Sub ``` 每次触发 `Worksheet_Change` 时都会弹出对话框告知变动涉及的具体地址位置。这种方式简单直观,不过对于频繁触发的情况可能会觉得有些繁琐。 ### 3. 向立即窗口打印日志(Debug.Print) 如果不想打扰正常操作流程又希望了解实时动态的话,可以选择将相关信息输出到VBE底部的“立即”面板里去: ```vba Private Sub Worksheet_Change(ByVal Target As Range) Debug.Print Now() & ": 变更发生在 -> " & Target.Address ' 更多功能实现... End Sub ``` 接着按Ctrl+G跳转至立即窗口即可看到每一步动作留下来的记录轨迹了。 ### 4. 设置临时开关控制是否启用自动更新功能 有时为了便于观察现象或者避免反复干扰原有计算体系运转状况,可以在模块头部声明一个布尔型标志位变量充当总控闸门角色,仅当你想深入探究细节之时才打开通道放行请求进入正式环节参与运算任务。 ```vba Dim blnDebugModeOn As Boolean: blnDebugModeOn = True Private Sub Worksheet_Change(ByVal Target As Range) If Not blnDebugModeOn Then Exit Sub ' 测试专用区域开始 Stop '强制暂停在此让程序员有机会介入干预 ' 测试专用区域结束 ' 正常业务逻辑继续往下走.... End Sub ``` 以上列举了几种常见实用场景下调试试用的技术手段供大家参考学习应用实践之中不断优化完善自身技能水平吧! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值