VBA类模块公共变量传值异常:调用initialise后返回False
VBA类模块返回False问题的解决方法
核心错误原因
你遇到的返回False问题,本质是返回对象类型时未使用Set关键字。VBA中函数返回对象实例必须用Set赋值,否则VBA会自动将对象转换为布尔值,默认返回False。
修正后的代码示例
1. AR类模块代码
确保类模块的名称设置为AR(在VBA编辑器属性窗口修改类的Name属性):
Public name As String ' 自定义初始化子过程,接收字符串参数赋值给name Public Sub Initialise(ByVal newName As String) Me.name = newName End Sub
2. 标准模块中的ARTODSN函数
Function ARTODSN(inputName As String) As AR Dim objAR As New AR ' 调用自定义初始化过程传入参数 objAR.Initialise inputName ' 必须用Set关键字返回对象实例 Set ARTODSN = objAR End Function
其他需要检查的点
- 确认自定义初始化过程的名称拼写完全一致(比如不要一处写
Initialise,另一处写成Initialize) - 确保初始化过程的参数类型匹配(比如传入的是字符串,不要传数值类型)
- 类模块的
name变量是公共可访问的,不要误设为私有
测试验证
在标准模块中添加测试过程,验证功能是否正常:
Sub TestARObject() Dim analysisResult As AR Set analysisResult = ARTODSN("SalesAnalysis") MsgBox analysisResult.name ' 应弹出"SalesAnalysis" End Sub
内容的提问来源于stack exchange,提问作者Oliver Gericke
相关产品推荐
相关产品推荐

