在Python中,当我们必须多次调用函数时,我们通常会在函数中传递参数,如下所示:
def function_add(a,b):
print(a+b)
function_add(4,5)
function_add(5,7)
function_add(10,4)
function_add(4,6)
我们是否也有类似的方法在 VBA 中实现它?我试图实现它,但我无法实现。下面是我的代码。
Private Sub SearchAndInsertRows()
Dim rng As Range
Dim cell As Range
Dim search As String
Dim kk As String
Set rng = ActiveSheet.Columns("A:A")
search = ""
Call searchGetKey(search)
Set cell = rng.Find(What:=search, LookIn:=xlFormulas, LookAt:=xlWhole, MatchCase:=False)
If cell Is Nothing Then
MsgBox "Not Found"
Else
kk = ""
Call searchSetKey(kk)
cell.Value = kk
End If
End Sub
Sub searchGetKey(ByRef getKey As String)
getKey = "a"
End Sub
Sub searchSetKey(ByRef setKey As String)
setKey = "b"
End Sub
Sub searchGetKey 和 searchSetKey 修改一个单元格,但我需要对多个单元格执行相同的操作。还有其他办法吗?
请随意在必要时优化代码。
非常感谢并非常感谢。 :)
VBA 中的函数必须返回一些内容。否则,您应该使用
Sub
:
Function function_add(a As Long, b As Long) As Long
function_add = a + b
End Function
Sub TestFunction()
MsgBox function_add(3, 5)
End Sub
你可以使用不带参数的函数,只是根据特定的计算算法返回。例如:
Function tomorrow_Date() As Date
tomorrow_Date = Date + 1
End Function
可以称为:
Sub testTommorrow_Date()
MsgBox tomorrow_Date
End Sub
或者一个
Sub
,默认情况下接受参数 ByRef
,如果未指定 ByVal
:
Sub Sub_add(a As Long, b As Long, c As Long)
c = a + b
End Sub
并测试它:
Sub TestSub_Add()
Dim c As Long
Sub_add 3, 2, c
MsgBox c
End Sub
当然,
a
和b
可以在测试中声明Sub
并使用类似的参数,但我想说它们与调用后更新的c
无关......