arrays - 数组参数必须是 ByRef

标签 arrays vba excel pass-by-reference

我在这里做错了什么?

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 所以我知道我错过了一些东西。

我当然可以使用变体,但感觉很hacky。

最佳答案

当你这样做时:

DoSomething (expression)

您强制将表达式作为值进行计算,并传递ByVal无论参数是否明确表示它已通过 ByRef。虽然这在大多数情况下或多或少没有影响,但当您尝试传递数组或对象引用时,它会在后端咬您。

去掉括号。

DoSomething expression

现在,您的代码还存在其他问题:您将字符串数组传递给 String 参数;那行不通。将参数设置为数组或 Variant,为了清楚起见,我建议将参数显式标记为 ByRef

关于arrays - 数组参数必须是 ByRef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42093387/

相关文章:

excel - 在 Excel 中创建临时工作表以执行计算

vba - 使用VBA根据句子的起始字符改变文本的颜色

php - 无法突出显示描述php mysql

vba - 在未打开的电子表格中使用 VBA FIND() 函数(或类比)

ms-access - 自动刷新 Access 2010 中的 Sharepoint 链接表?

c# - 如何正确创建单元格格式?

vba - 从 VBA 中的日期范围获取特定日期

android - 在 XML 数组中存储 R.drawable ID

Java FileInputStream 将 3-4 个字节放入字节数组的相同索引中?

c++ - 不是 C 处指针的预期值