MyTetra Share
Делитесь знаниями!
Информация о типе переменной
Время создания: 16.03.2019 23:43
Текстовые метки: переменные, VBA
Раздел: Разные закладки - VBA
Запись: xintrea/mytetra_db_adgaver_new/master/base/1507287844zsvzcj4znu/text.html на raw.githubusercontent.com

Есть такой термин RTTI - run-time type information. Информация о типе переменной, доступная во время выполнения программы. Иногда эта информация оказывается просто необходимой. В VBA есть тип данных Variant, который может принимать значения любого типа за исключением пользовательского. Вот например так:

Sub Test()

  Dim v_string As String

  Dim v_int As Integer

  Dim v_variant As Variant

  v_string = "Hello Variant"

  v_int = 123

  v_variant = v_string

  v_variant = v_int

End Sub

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

Sub TestVariant()

  Dim v_string As String

  Dim v_int As Integer

  Dim v_variant As Variant

  v_string = "Hello Variant"

  v_int = 123

  v_variant = v_string

  MsgBox (TypeName(v_variant))

  v_variant = v_int

  MsgBox (TypeName(v_variant))

End Sub

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

Sub TestArray()

  Dim v_arr(10) As String

  If IsArray(v_arr) Then MsgBox ("Массив")

End Sub

IsEmpty проверяет, была ли переменная инициализирована. Попробуйте запустить код, приведенный ниже, а потом раскомментируйте строку.

Sub TestEmpty()

  ' Dim v_arr As String

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

End Sub

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

Sub TestDate()

  Dim v_arr As String

  v_arr = "01.01.2001"

  If IsDate(v_arr) Then MsgBox ("YES")

  v_arr = "41.01.2001"

  If IsDate(v_arr) Then MsgBox ("YES")

End Sub

Функция IsNumeric проверяет, можно ли перевести строку в число:

Sub TestNumeric()

  Dim v_arr As String

  v_arr = "not numeric"

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

  v_arr = "1998"

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

End Sub

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

  • IsObject - проверяет, является ли переменная обьектом
  • IsNull(выражение) - проверка на пустое значение
  • IsError(выражение) - проверка выражения, представляет ли оно ошибку
Так же в этом разделе:
 
MyTetra Share v.0.65
Яндекс индекс цитирования