【发布时间】:2015-04-30 11:31:49
【问题描述】:
我多次调用一段特定的代码,因此我想使用可选参数。 我可以这样写:
Public Sub main()
strA = "A"
'Calling the function
CalculateMe (strA)
End Sub
Public Sub CalculateMe(strA As String)
Set rs = DB.OpenRecordset("tbl_A")
rs.MoveFirst
Do Until rs.EOF
If rs.Fields(0) = strA Then
dblA = rs.fields(2).Value
End If
rs.MoveNext
Loop
End Sub
如何更改函数以容纳超过 1 个可选参数?
类似:
Public Sub main()
strA = "A"
strB = "B"
'Calling the function
CalculateMe (strA, strB)
more code
End Sub
Public Sub CalculateMe(Optional strA As String, Optional strB as String)
Set rs = DB.OpenRecordset("tbl_A")
rs.MoveFirst
Do Until rs.EOF
If rs.Fields(0).Value = strA And rs.Fields(1).Value = strB Then
dblA = rs.Fields(2).Value
End If
rs.MoveNext
Loop
End Sub
按照 Pankaj Jaju 的建议,我设法将其更改为:
Public Sub main()
strA = "A"
strB = "B"
'Calling the function
dblA = CalculateMe (strA, strB)
End Sub
Public Function CalculateMe(Optional ByVal strA As String, Optional ByVal strB as String)
Set rs = DB.OpenRecordset("tbl_A")
rs.MoveFirst
Do Until rs.EOF
If rs.Fields(0).Value = strA And rs.Fields(1).Value = strB Then
dblA = rs.Fields(2).Value
End If
rs.MoveNext
Loop
End Sub
现在,如何清除可选参数的值?我需要这个来进行一些计算。比如:
Set strA = Nothing
【问题讨论】:
-
我知道这是一个老问题了,但是你想传递一个数组吗?然后循环遍历数组中的 x 项?
-
不,我不是;只有 2 个字符串变量。当时我不熟悉语法,Pankaj Jaju 帮助解决了这个问题。将函数更改为子例程并添加 ByVal 启用以执行我想要做的事情。忽略任何其他帖子/cmets;他们只是令人困惑。
标签: vba function optional-parameters