将变量传递给函数并返回VBA

时间:2017-06-09 09:58:31

标签: vba

试图了解如何将值从函数传递回sub并在消息框中显示结果,但我无法理解。我缺少什么以下学习代码: -

Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing

3 个答案:

答案 0 :(得分:2)

将函数的结果分配给变量并在消息框中显示结果:

Dim result as Integer 
result = myReturn(myNum)

答案 1 :(得分:2)

不要使用ByRef参数 - 只需正确使用功能。

Sub mySend()

Dim myNum As Integer

myNum = InputBox("Enter number")

myNum = myReturn(myNum) '// You need to assign (=) the value to the variable

msgbox myNum

End Sub
'--------------------------------------
Function myReturn(number As Integer) As Integer '// Note the return type after the ()

Dim myCalc As Integer

myCalc = number + 10

myReturn = myCalc

End Function

如果你想在你的例子中通过引用传递一个变量,那么你需要实际更改同一个变量的值,否则当你在调用代码中再次引用它时该值将不会改变:

(这是您修改的代码,以便在正确使用时显示ByRef的结果,我不建议实际使用此代码)

Sub mySend()

Dim myNum As Integer

myNum = InputBox("Enter number")

myReturn myNum '// No need for parentheses here

msgbox myNum

End Sub
'--------------------------------------
Function myReturn(ByRef myNum As Integer)

myNum = myNum + 10

End Function

答案 2 :(得分:0)

正如彼得所说,你需要保存你的myReturn(myNum)电话的结果。 然后显示变量:

result = myReturn(myNum)
MsgBox result

实际上你甚至不需要" Dim结果"。 为什么?我不知道,但我测试了它并且它有效。

相关问题