【问题标题】:Pass Input Box variable from one sub to another将输入框变量从一个子传递到另一个
【发布时间】:2021-09-21 14:18:22
【问题描述】:

我正在阅读另一个不需要全局声明的帖子。

我有一个 Sub 要求用户输入一个值,在另一个 Sub 中,我使用输入的值根据他们的输入调用其他 Sub。

在我的例子中我很接近吗?谢谢

Option Explicit

Sub MonthTest()
Dim strMonth As String

strMonth = InputBox("enter Area here")

Call Test2

End Sub

Sub Test2(strMonth As String)

Select Case strMonth
    Case Is = "82"
        Call Area82
    Case Is = "80"
        Call Area80
    
End Select
End Sub

【问题讨论】:

  • Test2 strMonth替换'Call Test2`,不需要使用Call
  • where the need for a Global declaration wasn't needed 同样也不需要Test2Select Case 可以是 MonthTest() 的一部分
  • @RaymondWu 那个简单的编辑工作。但是现在我在 Sub 上遇到了一个错误,而在过去我从未遇到过错误。
  • @Paxton,你必须更具体一些 - 什么错误,什么行?虽然这超出了这个问题的范围.....
  • @RaymondWu 返回的错误代码是编译错误:变量未定义Rows("4:4").Delete Shift:=x1up

标签: excel vba string call inputbox


【解决方案1】:

替换'调用Test2withTest2 strMonth, there's no need to use Call`

在子/函数中声明的变量只保留在子/函数本身中,因为您在Test2 中声明了一个参数,所以每次调用Test2 时都需要提供该参数(除非它声明为Optional) .

【讨论】:

    【解决方案2】:

    您必须将变量提供给调用函数,否则它不知道在哪里寻找它。

    改变: 调用测试2 到: 调用Test2 strMonth

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 我这样做了,我现在收到一个新错误 - 编译错误:变量未定义 Rows("4:4").Delete Shift:=x1up。我以前没有遇到过这个错误。
    【解决方案3】:

    x1up 应该是 xlup(小写“L”,而不是 #1)

    它是在 EXCEL COM 库中定义的常量。 点击 F2 并查看 EXCEL 库(您应该在 VBA 中的引用中拥有该库)。您应该会看到在库的(通用)部分或特定 ENum 名称下定义的 xlup 常量。

    【讨论】:

      猜你喜欢
      • 2018-01-14
      • 2018-10-22
      • 2018-11-04
      • 2015-11-27
      • 2013-02-08
      • 2015-10-23
      相关资源
      最近更新 更多