如何查找函数中变量取值来源?以VBA函数cumcpi的cpi变量为例
查找VBA函数cumcpi中cpi变量的取值来源
首先明确:cpi是cumcpi函数的输入参数,它不是模块内声明的变量,所以不会出现Dim cpi As...这类声明,它的数值完全来自调用该函数时传入的实参。
以下是具体查找步骤:
定位所有cumcpi函数的调用位置
- 打开VBA编辑器(按Alt+F11)
- 按Ctrl+F打开查找对话框,输入
cumcpi(,勾选“当前项目”后点击“查找全部” - 搜索结果里的每一条记录都是调用该函数的位置,可能是工作表单元格公式(比如
=cumcpi(A1,B2,C3)),也可能是其他VBA代码中的调用(比如result = cumcpi(10, 20, myCPIArray))
分析调用时传入的实参
- 若为工作表公式调用:查看对应参数单元格(比如示例中的C3),单元格内容就是cpi的来源,可能是直接数值、其他单元格引用,或是其他公式的计算结果
- 若为VBA代码调用:查看传入的变量名(比如示例中的
myCPIArray),再通过查找该变量的定义和赋值语句,追踪它的数值来源 - 提示:从代码里
cpi(C)的写法判断,cpi是数组类型,所以传入的实参大概率是数组或者工作表区域(VBA会自动将工作表区域转换为数组)
排查隐式全局变量的可能
若模块顶部没有Option Explicit,可能存在隐式声明的全局变量(比如某个子过程直接给cpi赋值但未声明),可以这样排查:- 在所有模块的顶部添加
Option Explicit(强制所有变量必须声明) - 按F5运行代码,VBA会报错提示未声明的变量,借此定位是否有地方隐式使用了cpi作为全局变量
- 在所有模块的顶部添加
内容的提问来源于stack exchange,提问作者Raphael Negri Pereira
相关产品推荐
相关产品推荐

