Шаг 19 - Информация о типе переменной

А зачем, вы спросите, иметь информацию о типе переменной в ходе работы программы? Ведь это делает программист. Опаньки:-). В VBA есть тип переменной Variant, который может быть любого типа за исключением пользовательского. Не верите? Смотрите код:

Sub Test()

Dim string_var As String

Dim int_var As Integer

Dim test_variant As Variant

string_var = "Hello Variant"

int_var = 123

test_variant = string_var

test_variant = int_var

End Sub

Как видите, и Variant можно передавать в процедуры, поэтому определение типа нужно, конечно если подобными вещами вы будете пользоваться. Для определения кода есть функция TypeName (...), которая вернет строку с именем переменной. Вот так, например, можно её использовать:

Sub Test()

Dim string_var As String

Dim int_var As Integer

Dim test_variant As Variant

string_var = "Hello Variant"

int_var = 123

test_variant = string_var

MsgBox (TypeName(test_variant))

test_variant = int_var

MsgBox (TypeName(test_variant))

End Sub

Кроме этого есть ряд вспомогательных функций позволяющих получить информацию о переменных. IsArray позволяет проверить является ли переменная массивом.

Sub Test()

Dim arr_var(10) As String

If IsArray(arr_var) Then

MsgBox ("Массив")

End Sub

IsEmpty проверка инициализации (наличия) переменной. Запустите код ниже, а потом раскомментируйте строку.

Sub Test()

' Dim arr_var As String

If IsEmpty(arr_var) Then MsgBox ("NO")

End Sub

IsDate проверяет можно ли преобразовать переменную к типу даты. Ниже надпись YES появится один раз.

Sub Test()

Dim arr_var As String

arr_var = "01.01.1998"

If IsDate(arr_var) Then

MsgBox ("YES")

arr_var = "41.01.1998"

If IsDate(arr_var) Then

MsgBox ("YES")

End Sub

Так же проверяется можно ли перевести в число IsNumeric:

Sub Test()

Dim arr_var As String

arr_var = "not numeric"

If IsNumeric(arr_var) Then MsgBox ("YES")

arr_var = "1998"

If IsNumeric(arr_var) Then MsgBox ("YES")

End Sub

Есть еще ряд подобных функций:

IsObject - проверка, что переменная обьект

IsNull(выражение) - проверка на пустое значение

IsError(выражение) - проверка выражения, представляет ли оно значение ошибки


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: