【问题标题】: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
关于Input:https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/inputstatement
【解决方案3】:
对于单个参数,不要使用括号
do_something 1