Шаг 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(выражение) - проверка выражения, представляет ли оно значение ошибки
Предыдущий Шаг | Следующий Шаг
Автор Каев Артем.