在单个函数中将多个值作为函数传递

问题描述 投票:0回答:1

在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 修改一个单元格,但我需要对多个单元格执行相同的操作。还有其他办法吗?

请随意在必要时优化代码。

非常感谢并非常感谢。 :)

excel vba excel-formula
1个回答
1
投票

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
无关......

© www.soinside.com 2019 - 2024. All rights reserved.