ByRef 参数类型不匹配仅更改声明中的变量位置

ByRef Argument type mismatch on just changing the variable position in declaration

我在VBA中定义了一个函数如下:

Sub TestFunction()    
Dim ArrayLength, IDvariable, IDComparisonResult, PreArrayLength As Integer
ReDim NodesArray(0)
PreArrayLength = 0
IDvariable = 0
.
.
Sort PreArrayLength
End Sub

而调用的函数如下:

Sub Sort (PreArrayLength As Integer)
.
.
.
end sub

以上函数运行良好,但如果我将 TestFunction() 中的声明更改为

Dim ArrayLength, IDvariable, PreArrayLength, IDComparisonResult As Integer

我的代码给我一个错误 "ByRef Argument type mismatch" 指示行

Sort PreArrayLength

任何人都可以指出我在声明中犯的错误或理解错误吗?

就这么简单:

Dim ArrayLength As Integer, _
    IDvariable As Integer, _
    PreArrayLength As Integer, _
    IDComparisonResult As Integer

因为当你使用 Dim 时,你必须为每个变量指定它是什么类型,前面的代码声明前三个为 Variant 只有最后一个一个为 Integer!

参考:How to declare variables in VBA