数组参数必须是ByRef

时间:2017-02-07 15:15:39

标签: arrays vba excel-vba pass-by-reference excel

我在这里做错了什么?

Sub Main()

Dim patients() As String

' Some code to populate the patients array, works fine

CalculateScores (patients) ' Array argument must be ByRef compile error

End Sub



Sub CalculateScores(patients As String)

End Sub

如果我将患者更改为Main中的变量数组和CalculateScores的参数,它可以正常工作但我无法看到无法传递字符串的逻辑。默认情况下是ByRef所以我知道我错过了什么。

我可以确定使用变体,但感觉很骇人。

1 个答案:

答案 0 :(得分:2)

执行此操作时:

DoSomething (expression)

您迫使expression被评估为作为值,并传递ByVal,无论该参数是否明确表示它已通过ByRef 。虽然这在大多数情况下或多或少没有影响,但当你尝试传递数组或对象引用时,它会在后端咬你。

删除括号。

DoSomething expression

现在,您的代码还存在其他问题:您正在将一个字符串数组传递给String参数;那是行不通的。将参数设为数组或Variant,为清晰起见,我建议将参数明确标记为ByRef