Любопытное поведение инструкции Dim в Microsoft Visual Basic - PullRequest
0 голосов
/ 04 марта 2020

Я использую VBA 7.1.1092, и у меня очень странное (но я, вероятно, упускаю что-то очевидное) поведение. Это код:

Function test(s As String) As String
    test = s
End Function
Function test2(p As String) As String
    Dim s As String
    Dim t As String
    s = p
    test2 = test(s)
End Function
Function test1(p As String) As String
    Dim s, t As String
    s = p
    test1 = test(s)
End Function

Функция test2 компилируется, в то время как компиляция test1 завершается с ошибкой по инструкции

test1=test(s)

с ошибкой «s несовместима с ByRef». Я думал, что объявления в test1 и test2 были идентичны. Итак, что мне не хватает? Заранее спасибо

1 Ответ

3 голосов
/ 04 марта 2020

В VBA

Dim s, t As String

эквивалентно:

Dim s as variant
Dim t as String

Поскольку тип s опущен, поэтому по умолчанию это будет variant.

вам придется объявить так:

Dim s As String
Dim t As String
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...