Как объявить несколько переменных с указанием типа, используя как в VBA? - PullRequest
2 голосов
/ 08 марта 2019

В соответствии с этой документацией Microsoft , следующий код может быть использован для проверки;

a, b и c все одинарные; х и у оба двойные

Dim a, b, c As Single, x, y As Double, i As Integer  
> a, b, and c are all Single; x and y are both Double  

Логика этого заключается в следующем

Вы можете указать разные типы данных для разных переменных, используя отдельное предложение As для каждой объявленной вами переменной. Каждая переменная принимает тип данных, указанный в первом предложении As, встречающемся после части имени переменной.

Однако, когда я проверил с помощью отладчика или вывода MsgBox VarType(a), это не так.

enter image description here

Как видите, As работает только для переменных непосредственно перед собой, т. Е. c, y и i. Все остальные - Variant / Empty и VarType возвращает 0.

Это просто неправильная документация, или я упускаю что-то очевидное?

Microsoft Visual Basic для приложений 7.1.1056 Excel 2016 (Windows 10)

Ответы [ 2 ]

4 голосов
/ 08 марта 2019

Документация, на которую вы ссылаетесь, не является неправильной, но она написана для VB.NET, а не VBA.

В VBA, как вы заметили, любые объявления переменных, которые не выполняются немедленнона As <type> будет Variant.

Поэтому вам нужно написать:

Dim a As Single, b As Single, c As Single, x As Double, y As Double, i As Integer
1 голос
/ 08 марта 2019

В VBA, когда вы объявляете

Dim a, b, c As Single

То, что он делает, эквивалентно этому:

Dim a As Variant, b As Variant, c As Single

Я считаю, что лучше всего всегда объявлять переменную в отдельной строке. Это предотвращает эту ошибку, а также позволяет быстрее сканировать код. Таким образом, код будет выглядеть так:

Dim a As Single
Dim b As Single
Dim c As Single
...