【问题标题】:VBA sub with inputs带输入的 VBA 子
【发布时间】:2020-07-06 16:38:49
【问题描述】:

如何将参数输入到子程序中?当我运行宏时,子程序只是运行而不要求任何输入。

Sub do_something(input as integer)
    xxxxxx
end sub

我知道我可以在另一个可以给它输入的子/函数中使用子。像下面这样,

sub caller_function()
    call do_something(1)
end sub

还有其他使用 do_something 的方法吗? 提前致谢!

【问题讨论】:

标签: excel vba excel-formula


【解决方案1】:

像这样设置你的子:

Sub do_something(param As Integer)
    MsgBox "The parameter passed to this Sub is " & param
End Sub

叫它:

do_something 1

如果你想要多个参数..

Sub do_something(param1 As Integer, param2 As String)
    MsgBox "The parameters passed to this Sub is " & param1 & " and " & param2
End Sub

叫它:

do_something 4,"Hello"

或者一会儿或阅读混乱:

do_something param2:="Hello", param1:=4

【讨论】:

    【解决方案2】:

    您提供的代码无法编译。也许你想提供一个简单的例子......?

    它无法编译,因为Input 是保留字,用于从文件对象中读取数据。您不能将其用作变量名。 (我假设“xxxxx”表示代码应该去哪里,即'Do something here。)

    以下代码有效,但如果不传递值就无法运行它:

    Sub do_something(i As Integer)
        MsgBox i
    End Sub
    

    如果你想让变量可选,你可以添加Optional关键字。然后即使没有传递值也会运行:

    Sub do_something(Optional i As Integer)
        MsgBox i
    End Sub
    

    您还可以使用全局范围的变量,这将允许 sub 在不直接提供值的情况下运行:

    Option Explicit
    
    Public i As Integer
    
    Sub do_something()
        MsgBox i
    End Sub
    

    关于Inputhttps://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/inputstatement

    【讨论】:

      【解决方案3】:

      对于单个参数,不要使用括号

      do_something 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-21
        • 1970-01-01
        • 2021-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多