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

VBA无需全局声明如何将InputBox变量从一个Sub传递到另一个Sub

问题解答

你当前的代码写法存在错误,无法正常运行:

  • 你定义的Test2过程要求传入一个字符串类型的参数,但你在MonthTest里调用Test2时没有传入任何参数,运行时会抛出参数不匹配的报错。
  • 你原本不使用全局变量、通过过程传参传递值的思路是完全正确的,这种写法可以避免全局变量污染作用域,后期代码可维护性更高。

修正后的代码

你只需要修改MonthTest里的调用语句即可:

Option Explicit

Sub MonthTest()
    Dim strMonth As String
    strMonth = InputBox("enter Area here")
    ' 调用Test2时传入获取到的strMonth参数
    Call Test2(strMonth)
    ' 也可以省略Call关键字,写法为 Test2 strMonth
End Sub

Sub Test2(strMonth As String)
    Select Case strMonth
        Case Is = "82"
            Call Area82
        Case Is = "80"
            Call Area80
    End Select
End Sub

额外优化建议

如果要考虑用户点击InputBox取消的场景,还可以加一层空值判断,避免无意义的参数传递:

Sub MonthTest()
    Dim strMonth As String
    strMonth = InputBox("enter Area here")
    ' 判断用户是否输入了内容,取消/空输入直接退出
    If strMonth = "" Then Exit Sub
    Call Test2(strMonth)
End Sub

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:09:04