У меня есть следующий код VBA:
Function InputElmt(element As Double) As Variant
InputElmt = element
End Function
Sub runInputElmt()
Dim arr() As Variant, Firstelmt As Double
arr = Array(1, 2)
Debug.Print InputElmt(arr(0) * 1) ' 1st call
Firstelmt = arr(0)
Debug.Print InputElmt(Firstelmt) ' 2nd call
Debug.Print InputElmt(arr(0)) ' 3rd call: error
End Sub
Подпрограмма вызывает функцию InputElmt
три раза.Первые два дают правильные результаты, в то время как последний вызывает ошибку (см. ошибка компиляции ).
Моя интерпретация заключается в том, что третий вызов передает в функцию строку arr(0)
а не его оценка.Напротив, в первых двух вызовах arr(0)
оцениваются.
Мои вопросы
1) верно ли мое объяснение?и
2) эта ошибка связана с ByRef или ByVal, как могло бы указывать сообщение об ошибке?