2015-06-15 4 views
0

Я определил функцию в VBA следующим образом:ByRef Аргумент типа Несоответствие просто изменение переменной позиции в декларации

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 

мой код дает мне ошибку "ByR эф Аргумент типа несоответствие»указывает на линию

Sort PreArrayLength 

Может кто-нибудь указать ошибку, которую я делаю в декларации или понимания ошибки?

ответ

2

Это так просто, как это:

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

Потому что, когда вы используете Dim, вы должны указать для каждой переменной, какой тип его, предыдущий код был объявить первые три как Variant и только последний как Integer!

Код: How to declare variables in VBA

Смежные вопросы