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

为何在VB.NET中无法调用Call函数或自定义Sub过程?

问题原因与解决办法

核心问题

VBA不允许在一个Sub过程内部嵌套定义另一个Sub过程。你把需要调用的Sub写在Sub Main()内部,导致这些Sub的作用域只限于Main内部,外部代码根本识别不到,所以会报“未声明”错误,哪怕用Call也没用。

具体修复步骤

第一个项目修复

把Sub Main()内部的Sub AddTwoNumbers()、Sub PrintResult()移到Main的外部,和Main同级:

Sub Main()
    AddTwoNumbers
End Sub

Sub AddTwoNumbers()
    ' 你的代码逻辑
    PrintResult
End Sub

Sub PrintResult()
    ' 你的代码逻辑
End Sub

第二个项目修复

同样把Sub Main()里的Sub GetUserName()移到外部,确保所有Sub都是同级定义:

Sub Main()
    Call GetUserName ' 移到外部后Call就能正常生效
End Sub

Sub GetUserName()
    ' 你的代码逻辑
End Sub

补充说明

  • VBA的过程(Sub/Function)只能在模块级别定义,不能嵌套在其他过程里。
  • 如果想让过程只在当前模块内部调用,可以在Sub前加Private关键字(比如Private Sub AddTwoNumbers()),但前提是它和调用者在同一模块且不在其他过程内部。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 07:40:42