将值从函数传递到子例程
Passing values from Function to Subroutine
我一直在四处寻找这个问题的答案,但一直找不到能够很好地解释我所理解的答案。
我没有使用函数的经验,总体上 VBA 也很少。因此,如果我有一个正在执行的子例程,然后调用一个我将参数传递给的函数,一旦该函数运行,我如何将结果返回到要使用的主子例程中?
这适用于 Access,我从一个记录集中提取一个数字,然后将其传递给一个用于插入以创建新数字的函数。然后我需要将该数字传回要使用的子例程。
这里有两种选择。
运行 使用 F8
键查看会发生什么的代码,并确保激活 Locals Window 这样您就可以看到变量值如何变化
1- Return 直接来自函数的值
运行 DoSomethingReturnFromFunction
子
' Return value from function
Public Sub DoSomethingReturnFromFunction()
' Define a parameter
Dim myParameter As String
myParameter = "SomeValue"
' Call a function and store its value into a variable
Dim myResult As Long
myResult = MyFunction(myParameter)
' Print the result variable
Debug.Print myResult
End Sub
Private Function MyFunction(ByVal myParameter as String) As Long
Dim result As Long
Select Case myParameter
Case "SomeValue"
result = 1
Case Else
result = 2
End Select
' Assign the result value to the function
MyFunction = result
End Function
结果:Debug.Print myResult
打印到中间 window 函数返回的值
2- 更改在另一个函数中通过 ByRef 传递的变量值
运行 DoSomethingReturnFromByRef
子
' Change variable value passed ByRef inside another function
Public Sub DoSomethingReturnFromByRef()
' Call a function
Dim myByRefParameter As Long
MySub myByRefParameter
' Print the result
Debug.Print myByRefParameter
End Sub
Private Sub MySub(ByRef myByRefParameter As Long)
' Change the value of the variable passed ByRef inside the procedure
myByRefParameter = 1
End Sub
结果:Debug.Print myByRefParameter
向中间 window 打印存储在 myByRefParameter
最初在 DoSomethingReturnFromByRef
过程
中声明的变量中的值
如果清楚请告诉我
我一直在四处寻找这个问题的答案,但一直找不到能够很好地解释我所理解的答案。
我没有使用函数的经验,总体上 VBA 也很少。因此,如果我有一个正在执行的子例程,然后调用一个我将参数传递给的函数,一旦该函数运行,我如何将结果返回到要使用的主子例程中?
这适用于 Access,我从一个记录集中提取一个数字,然后将其传递给一个用于插入以创建新数字的函数。然后我需要将该数字传回要使用的子例程。
这里有两种选择。
运行 使用 F8
键查看会发生什么的代码,并确保激活 Locals Window 这样您就可以看到变量值如何变化
1- Return 直接来自函数的值
运行 DoSomethingReturnFromFunction
子
' Return value from function
Public Sub DoSomethingReturnFromFunction()
' Define a parameter
Dim myParameter As String
myParameter = "SomeValue"
' Call a function and store its value into a variable
Dim myResult As Long
myResult = MyFunction(myParameter)
' Print the result variable
Debug.Print myResult
End Sub
Private Function MyFunction(ByVal myParameter as String) As Long
Dim result As Long
Select Case myParameter
Case "SomeValue"
result = 1
Case Else
result = 2
End Select
' Assign the result value to the function
MyFunction = result
End Function
结果:Debug.Print myResult
打印到中间 window 函数返回的值
2- 更改在另一个函数中通过 ByRef 传递的变量值
运行 DoSomethingReturnFromByRef
子
' Change variable value passed ByRef inside another function
Public Sub DoSomethingReturnFromByRef()
' Call a function
Dim myByRefParameter As Long
MySub myByRefParameter
' Print the result
Debug.Print myByRefParameter
End Sub
Private Sub MySub(ByRef myByRefParameter As Long)
' Change the value of the variable passed ByRef inside the procedure
myByRefParameter = 1
End Sub
结果:Debug.Print myByRefParameter
向中间 window 打印存储在 myByRefParameter
最初在 DoSomethingReturnFromByRef
过程
如果清楚请告诉我