You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA传递类模块实例作为子过程参数时触发错误如何解决?

问题原因

VBA对值类型和对象类型的赋值有不同语法要求:

  • Integer、String、Boolean这类值类型变量,直接用=赋值即可
  • 所有类模块实例、内置对象(如Worksheet、Range)这类对象类型变量,必须使用Set关键字完成赋值,否则就会触发运行时错误。这也是为什么你传递普通类型参数不会报错,只有传递类实例时才会出问题,和你是否添加ByVal/ByRef参数修饰符无关。
修复方案

修改gameUi类模块的Init方法,给对象赋值的语句添加Set关键字即可:

Private board As board

Sub Init(gameBoard As board)
    Set board = gameBoard
End Sub
补充说明
  • 后续如果需要清空对象变量释放内存,也需要遵循对象赋值规则,写法为Set board = Nothing
  • 如果是给对象的属性(值类型)赋值,不需要加Set,只有给对象变量本身赋值时需要使用Set关键字

内容的提问来源于stack exchange,提问作者codehero

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:24:02