Как узнать тип переменной vba excel

В языке VBA есть универсальные типы данных, т.е. способные хранить как число, так и строку, дату и любой другой тип информации. Например, ячейка в таблице может содержать что угодно и изначально, программа не знает какой в ней тип данных хранится. Кроме того, в самой программе может использоваться тип данных Variant, который так же может содержать любое значение любого типа.

Чтобы определить какой тип данных в ячейке или в переменной типа Variant, можно воспользоваться несколькими способами.

Способ 1. Использовать функцию TypeName для определения типа данных

Эта функция возвращает строку с названием типа данных на английском. В качестве аргумента принимает переменную, значение ячейки.
Обратите внимание: Функция определяет только стандартные типы данных и не может определить пользовательский тип (определенный с помощью Type).

Возможные возвращаемые функцией значения:

Byte Число типа Byte
Integer Целое число
Long Длинное целое число
Single Число одиночной точности с плавающей запятой
Double Число двойной точности с плавающей запятой
Currency Валюта
Decimal Число с плавающей запятой
Date Дата
String Строка
Boolean Логическое
Error Ошибка
Empty Не проинициализировано (т.е. переменная не была объявлена)
Null Неверные данные (в переменной нет корректных данных)
Object Объект (класс)
Unknown Тип данных не известен
Nothing Объект, никуда не ссылающийся

Приведу несколько примеров по использованию TypeName.

Пример 1. Определение типа переменной.

Dim v As Integer
MsgBox TypeName(v) ' Выведет: Integer

Обратите внимание: если вы используете результат TypeName в условии, т.е. проверяете, соответствует ли тип данных определенному, например, Integer, то регистр символов возвращаемого типа имеет значение. Т.е. нужно писать Integer с заглавной буквы, либо использовать приведение всех символов к одному регистру.

Пример 2. Использование TypeName в условии.

Dim v As Integer
If TypeName(v) = "Integer" Then MsgBox "Yes" Else MsgBox "No"         ' Yes
If TypeName(v) = "integer" Then MsgBox "Yes" Else MsgBox "No"         ' No
If LCase(TypeName(v)) = "integer" Then MsgBox "Yes" Else MsgBox "No"  ' Yes

Пример 3. Определение типа данных в ячейке.

MsgBox TypeName(Cells(1, 1).Value) ' Выведет тип данных в ячейке A1

Если функции была передана переменная массив, она вернет тип данных в массиве с добавлением скобок.

Пример 4. Определение типа массива.

Dim Arr1(10) As Integer
Dim Arr2(10)
MsgBox TypeName(Arr1) ' Выведет: Integer()
MsgBox TypeName(Arr2) ' Выведет: Variant()

Способ 2. Проверка на возможность преобразования строки к нужному типу.

Бывает ситуация, когда значение, например, число или дата, содержится в строке. В этом случае TypeName вернет String, а не Integer или Date. Чтобы узнать, что содержится в строке, можно воспользоваться одной из функций IsNumeric, IsDate, IsObject, IsArray, IsNull, IsError.

IsNumeric Проверяет может ли выражение быть преобразовано в число
IsDate Проверяет может ли выражение быть преобразовано в дату
IsObject Проверяет, является ли переменная объектом
IsArray Проверяет, является ли переменная массивом
IsNull Проверка на пустое значение
IsError Проверка выражения на ошибку

Пример 4. Определение может ли переменная быть преобразована в число.

Dim v As String
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no (т.к. в строке нет числа)
v = "120"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
v = "120.45"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no
v = "test 120"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no
v = "120 test"
If IsNumeric(v) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no

К сожалению, как видим из примера, нет возможности проверить, содержится ли в строке число с плавающей точкой.

Пример 5. Определение содержит ли переменная дату (может быть преобразована в дату).

Dim firstDate, secondDate As Date
Dim timeOnly, dateAndTime, noDate As String
firstDate = CDate("12.05.2017")
secondDate = #12/5/2017#
timeOnly = "15:45"
dateAndTime = "12.05.2017 15:45"
noDate = "Test"
If IsDate(firstDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(secondDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(timeOnly) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(dateAndTime) Then MsgBox "yes" Else MsgBox "no" ' Выведет: yes
If IsDate(noDate) Then MsgBox "yes" Else MsgBox "no" ' Выведет: no

Проверка, содержится ли число или дата в ячейке листа делается аналогично, как и с переменными.

Помимо этих способов можно конечно еще придумать и другие, например, проверку строки с данными регулярным выражением или пройти по каждому символу в цикле и проверить цифра это или нет и тому подобное. Но на мой взгляд, описанных мной способов вполне достаточно для решения повседневных задач.

Содержание

  1. Функция TypeName
  2. Синтаксис
  3. Замечания
  4. Пример
  5. См. также
  6. Поддержка и обратная связь
  7. TypeName function
  8. Syntax
  9. Remarks
  10. Example
  11. See also
  12. Support and feedback
  13. Определение типа объекта (Visual Basic)
  14. TypeName и TypeOf. Является
  15. Запуск примера
  16. Определение типа данных в ячейке или переменной
  17. Способ 1. Использовать функцию TypeName для определения типа данных
  18. Способ 2. Проверка на возможность преобразования строки к нужному типу.
  19. Информация о типе переменной

Функция TypeName

Возвращает данные String, которые предоставляют информацию о переменной.

Синтаксис

TypeName(варнаме)

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

Замечания

Строка, возвращаемая функцией TypeName, может быть одного из следующих типов:

Возвращаемая строка Переменная
тип объекта Объект, тип которого — objecttype
Byte Значение типа Byte
Integer Integer
Long Целое значение типа Long
Одинарное с плавающей точкой Число с плавающей запятой (точкой) одиночной точности
Double Число с плавающей запятой (точкой) двойной точности
Currency Значение типа Currency
Decimal Десятичная величина
Date Значение типа Date
String String
Логический Значение типа Boolean
Ошибка Значение ошибки
Empty Неинициализированных
Null Отсутствие допустимых данных
Object Объект
Unknown Объект, тип которого не известен
Ничего Объектная переменная, которая не ссылается на объект

Если аргумент varname — массив, возвращаемая строка может быть любой из возможных возвращаемых строк (или Variant) с добавленными пустыми круглыми скобками. Например, если варнаме является массивом целых чисел, TypeName возвращает «Integer() значение .

Пример

В этом примере функция TypeName используется для возврата информации о переменной.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

TypeName function

Returns a String that provides information about a variable.

Syntax

TypeName(varname)

The required varname argument is a Variant containing any variable except a variable of a user-defined type.

The string returned by TypeName can be any one of the following:

String returned Variable
object type An object whose type is objecttype
Byte Byte value
Integer Integer
Long Long integer
Single Single-precision floating-point number
Double Double-precision floating-point number
Currency Currency value
Decimal Decimal value
Date Date value
String String
Boolean Boolean value
Error An error value
Empty Uninitialized
Null No valid data
Object An object
Unknown An object whose type is unknown
Nothing Object variable that doesn’t refer to an object

If varname is an array, the returned string can be any one of the possible returned strings (or Variant) with empty parentheses appended. For example, if varname is an array of integers, TypeName returns «Integer() «.

Example

This example uses the TypeName function to return information about a variable.

See also

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Источник

Определение типа объекта (Visual Basic)

Переменные универсального объекта (то есть переменные, объявленные как Object ) могут содержать объекты из любого класса. При использовании переменных типа Object может потребоваться выполнить различные действия в зависимости от класса объекта. Например, некоторые объекты могут не поддерживать определенное свойство или метод. Visual Basic предоставляет два способа определения типа объекта, хранящегося в объектной переменной TypeName : функция и TypeOf. Is оператор .

TypeName и TypeOf. Является

Функция TypeName возвращает строку и лучше всего подходит для хранения или отображения имени класса объекта, как показано в следующем фрагменте кода:

Оператор TypeOf. Is является лучшим вариантом для тестирования типа объекта, так как он выполняется гораздо быстрее, чем эквивалентное сравнение строк с помощью TypeName . В инструкции используется TypeOf. Is If. Then. Else следующий фрагмент кода:

Здесь должно быть слово предостережения. Оператор TypeOf. Is возвращает значение True , если объект имеет определенный тип или является производным от определенного типа. Почти все, что вы делаете с Visual Basic, включает объекты, которые включают некоторые элементы, которые обычно не считаются объектами, например строки и целые числа. Эти объекты являются производными от и наследуют методы от Object. При передаче Integer и вычислении с Object TypeOf. Is помощью оператор возвращает True . В следующем примере сообщается, что параметр InParam является и : Object Integer

В следующем примере используются и TypeOf. Is TypeName для определения типа объекта, передаваемого ему в аргументе Ctrl . Процедура TestObject вызывается ShowType с тремя различными типами элементов управления.

Запуск примера

Создайте проект приложения Windows и добавьте элемент Button управления, CheckBox элемент управления и RadioButton элемент управления в форму.

С помощью кнопки в форме вызовите процедуру TestObject .

Источник

Определение типа данных в ячейке или переменной

В языке VBA есть универсальные типы данных, т.е. способные хранить как число, так и строку, дату и любой другой тип информации. Например, ячейка в таблице может содержать что угодно и изначально, программа не знает какой в ней тип данных хранится. Кроме того, в самой программе может использоваться тип данных Variant, который так же может содержать любое значение любого типа.

Чтобы определить какой тип данных в ячейке или в переменной типа Variant, можно воспользоваться несколькими способами.

Способ 1. Использовать функцию TypeName для определения типа данных

Эта функция возвращает строку с названием типа данных на английском. В качестве аргумента принимает переменную, значение ячейки.
Обратите внимание: Функция определяет только стандартные типы данных и не может определить пользовательский тип (определенный с помощью Type).

Возможные возвращаемые функцией значения:

Byte Число типа Byte
Integer Целое число
Long Длинное целое число
Single Число одиночной точности с плавающей запятой
Double Число двойной точности с плавающей запятой
Currency Валюта
Decimal Число с плавающей запятой
Date Дата
String Строка
Boolean Логическое
Error Ошибка
Empty Не проинициализировано (т.е. переменная не была объявлена)
Null Неверные данные (в переменной нет корректных данных)
Object Объект (класс)
Unknown Тип данных не известен
Nothing Объект, никуда не ссылающийся

Приведу несколько примеров по использованию TypeName.

Пример 1. Определение типа переменной.

Обратите внимание: если вы используете результат TypeName в условии, т.е. проверяете, соответствует ли тип данных определенному, например, Integer, то регистр символов возвращаемого типа имеет значение. Т.е. нужно писать Integer с заглавной буквы, либо использовать приведение всех символов к одному регистру.

Пример 2. Использование TypeName в условии.

Пример 3. Определение типа данных в ячейке.

Если функции была передана переменная массив, она вернет тип данных в массиве с добавлением скобок.

Пример 4. Определение типа массива.

Способ 2. Проверка на возможность преобразования строки к нужному типу.

Бывает ситуация, когда значение, например, число или дата, содержится в строке. В этом случае TypeName вернет String, а не Integer или Date. Чтобы узнать, что содержится в строке, можно воспользоваться одной из функций IsNumeric, IsDate, IsObject, IsArray, IsNull, IsError.

IsNumeric Проверяет может ли выражение быть преобразовано в число
IsDate Проверяет может ли выражение быть преобразовано в дату
IsObject Проверяет, является ли переменная объектом
IsArray Проверяет, является ли переменная массивом
IsNull Проверка на пустое значение
IsError Проверка выражения на ошибку

Пример 4. Определение может ли переменная быть преобразована в число.

К сожалению, как видим из примера, нет возможности проверить, содержится ли в строке число с плавающей точкой.

Пример 5. Определение содержит ли переменная дату (может быть преобразована в дату).

Проверка, содержится ли число или дата в ячейке листа делается аналогично, как и с переменными.

Помимо этих способов можно конечно еще придумать и другие, например, проверку строки с данными регулярным выражением или пройти по каждому символу в цикле и проверить цифра это или нет и тому подобное. Но на мой взгляд, описанных мной способов вполне достаточно для решения повседневных задач.

Источник

Информация о типе переменной

Есть такой термин 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(выражение) — проверка выражения, представляет ли оно ошибку

Источник

Return to VBA Code Examples

This article will demonstrate the use of the VBA TypeOf Operator.

The VBA TypeOf Operator is used in determining the type of an object. This can be useful in enabling or disabling controls on a VBA form or to control the flow of code depending on what type of object is being used.

Using TypeOf to Control Code

We can use TypeOf to ensure that the selection made is the type of specific object that we require – for example, we may want to select a range and then use an IF statement to see what is selected.  If a range is selected, then we we will get a message telling us that a range is selected, but if a range is not selected, we will get a different message.

Let us select some cells on our worksheet.

VBA Text TypeOf Select Range

Now, if we run the macro below, we will be told that we selected a Range.

Sub TestSelection()
  Dim rng As Object
  If TypeOf Selection Is Range Then
     MsgBox "A range has been selected!"
  Else
     MsgBox "Something else is selected"
  End If
End Sub

VBA Text TypeOf Select Range_Msg

However, if we do not select a range and select something else – perhaps a chart – and then run the macro, we will get a different result!

VBA Text TypeOf Select Chart Msg

Using TypeOf on Form Controls

VBA enables us to create interactive forms that the user can fill in and return data to the code to be used in various ways.  We can use the TypeOf operator to determine the type of controls that are being used on a form.

In the example below, I have created a user form with a variety of controls on it – a couple of Text Boxes, a Combo Box, 2 option buttons, 2 check boxes and 3 command buttons.

VBA Text TypeOf Form Intro

Using the code below, I can determine what type of controls are on the form by looping through all the controls on the form.   I have used the TypeName function to return a message with the type of the control, and have used a VBA IF Statement using the TypeOf function  to check what type of control is selected, and then a further message box to return that type of control.

Sub WhatControlType()
  Dim ctl As Object
  For Each ctl In Me.Controls
    MsgBox (TypeName(ctl))
'Use the TypeOf function to determine the object's type.
    If TypeOf ctl Is msforms.TextBox Then
      MsgBox ("The control is a TextBox.")
    ElseIf TypeOf ctl Is msforms.ComboBox Then
      MsgBox ("The control is a ComboBox.")
    ElseIf TypeOf ctl Is msforms.Label Then
      MsgBox ("The control is a Label.")
    ElseIf TypeOf ctl Is msforms.CommandButton Then
      MsgBox ("The control is a Command Button.")
    ElseIf TypeOf ctl Is msforms.CheckBox Then
      MsgBox ("The control is a Check Box.")
    ElseIf TypeOf ctl Is msforms.OptionButton Then
      MsgBox ("The control is an Option/Radio Button.")
    Else
      MsgBox ("The object is some other type of control.")
    End If
Next ctl
End Sub

This type of code can be very useful if we wish to enable or disable controls.   In the code below, when the form is first opened, the option buttons and check boxes are disabled.

Private Sub UserForm_Initialize()
  Dim ctl As Object
  For Each ctl In Me.Controls
     If TypeOf ctl Is msforms.CheckBox Then
        ctl.Enabled = False
     ElseIf TypeOf ctl Is msforms.OptionButton Then
        ctl.Enabled = False
     Else
        ctl.Enabled = True
     End If
   Next ctl
End Sub

VBA Text TypeOf_Form

To enable the option buttons and checkboxes, I have written some further code behind the Enable Controls button.

Private Sub cmdEnable_Click()
  Dim ctl As Object
  For Each ctl In Me.Controls
    If TypeOf ctl Is msforms.CheckBox Then
      ctl.Enabled = Not ctl.Enabled
    ElseIf TypeOf ctl Is msforms.OptionButton Then
      ctl.Enabled = Not ctl.Enabled
    End If
  Next ctl
End Sub

Now when we click on the Enable Controls button, if the controls are disabled, they will become enabled and if they are enabled they will become disabled.  This is achieved using the Not Operator which enables us to toggle between disabled and enabled.

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
vba save as

Learn More!

����������� ����� ����������

����������� ����� ����������

� VBA ������������� ����������� ��������� ���������� � ���� ����� ���������� �� ����� ���������� ���������. ������ ��� ���������� (��� ��� ��������, ������������� � ���������� ���� Variant) ����� ����������� ���������.

1.���� ������������� ����������� � VBA ���� ����� ������������ ������� VarType. � �������� ��������� ��� ��������� ������������� ���������� ��� ����������� �������� ���������� ����. ������������ ���� �������� �������� � �� ����������� ��������� � ����. 1.8.

������� 1.8. ��������, ������������ �������� VarType

����������

������� VarType ���������� �������� vbArray ������ � ����� �� ���������, ���������������� ��� ��������� �������. ��������, ��� ������� ����� ������� ��������� �������� 8192 + 8 = 8200. �������� �� vbVariant ������������ ������ � ����� �� ��������� vbArray � ������ ��� �������� � ���������� ���� Variant.

2.���� ����������� ���� ���������� ����� ������������ ���������� ������� TypeName. � �������� ��������� ��� ��������� ������������� ���������� ��� ����������� �������� ���������� ����. ���������� ������ ������� ������ (��� String) � ������ ���� ���������, �������� �Integer�, �String�, �Workbook�, �Object�. ������ ������� ����� ������� ��������� ������������� ��������, �������� ������� ��������� � ����. 1.9.

������� 1.9. ������������� ��������, ������������ �������� TypeName

3.���� ���� ����� ���������� ��� �������, �� ������� ��������� ������, ��������� ������������ ���������� TypeOf, ������� ��������� ������: TypeOf ������ Is �������������_����. ������ ���������� ���������� �������� True, ���� ������ � ������ ������ ��������� �� ������, ��� ���� �������� ������������� ��������� �������������_����. � ��������� ������ ������������ �������� False. ��������, ���� obj � ������ �� ������ Worksheet, �� � ���������� ���������� ���������� TypeOf obj Is Worksheet �������� �������� True.

����������

���������� TypeOf �������� ������ ��� ������, ������� ��������, �������� �� Nothing. ���� � �������� ��������� �������������_���� ������������ Object, �� ����������� ���������� ���������� ����� �������� True ���������� �� ���� �������, �� ������� ��������� ������.

На чтение 7 мин Просмотров 1.6к. Опубликовано 07.11.2020

Содержание

  1. Способ 1. Использовать функцию TypeName для определения типа данных
  2. Способ 2. Проверка на возможность преобразования строки к нужному типу.
  3. TypeName и TypeOf. Рекомендуется TypeName and TypeOf…Is
  4. Запуск примера To run the example

В языке VBA есть универсальные типы данных, т.е. способные хранить как число, так и строку, дату и любой другой тип информации. Например, ячейка в таблице может содержать что угодно и изначально, программа не знает какой в ней тип данных хранится. Кроме того, в самой программе может использоваться тип данных Variant, который так же может содержать любое значение любого типа.

Чтобы определить какой тип данных в ячейке или в переменной типа Variant, можно воспользоваться несколькими способами.

Способ 1. Использовать функцию TypeName для определения типа данных

Эта функция возвращает строку с названием типа данных на английском. В качестве аргумента принимает переменную, значение ячейки.
Обратите внимание: Функция определяет только стандартные типы данных и не может определить пользовательский тип (определенный с помощью Type).

Возможные возвращаемые функцией значения:

Byte Число типа Byte
Integer Целое число
Long Длинное целое число
Single Число одиночной точности с плавающей запятой
Double Число двойной точности с плавающей запятой
Currency Валюта
Decimal Число с плавающей запятой
Date Дата
String Строка
Boolean Логическое
Error Ошибка
Empty Не проинициализировано (т.е. переменная не была объявлена)
Null Неверные данные (в переменной нет корректных данных)
Object Объект (класс)
Unknown Тип данных не известен
Nothing Объект, никуда не ссылающийся

Приведу несколько примеров по использованию TypeName.

Пример 1. Определение типа переменной.

Обратите внимание: если вы используете результат TypeName в условии, т.е. проверяете, соответствует ли тип данных определенному, например, Integer, то регистр символов возвращаемого типа имеет значение. Т.е. нужно писать Integer с заглавной буквы, либо использовать приведение всех символов к одному регистру.

Пример 2. Использование TypeName в условии.

Пример 3. Определение типа данных в ячейке.

Если функции была передана переменная массив, она вернет тип данных в массиве с добавлением скобок.

Пример 4. Определение типа массива.

Способ 2. Проверка на возможность преобразования строки к нужному типу.

Бывает ситуация, когда значение, например, число или дата, содержится в строке. В этом случае TypeName вернет String, а не Integer или Date. Чтобы узнать, что содержится в строке, можно воспользоваться одной из функций IsNumeric, IsDate, IsObject, IsArray, IsNull, IsError.

IsNumeric Проверяет может ли выражение быть преобразовано в число
IsDate Проверяет может ли выражение быть преобразовано в дату
IsObject Проверяет, является ли переменная объектом
IsArray Проверяет, является ли переменная массивом
IsNull Проверка на пустое значение
IsError Проверка выражения на ошибку

Пример 4. Определение может ли переменная быть преобразована в число.

К сожалению, как видим из примера, нет возможности проверить, содержится ли в строке число с плавающей точкой.

Пример 5. Определение содержит ли переменная дату (может быть преобразована в дату).

Проверка, содержится ли число или дата в ячейке листа делается аналогично, как и с переменными.

Помимо этих способов можно конечно еще придумать и другие, например, проверку строки с данными регулярным выражением или пройти по каждому символу в цикле и проверить цифра это или нет и тому подобное. Но на мой взгляд, описанных мной способов вполне достаточно для решения повседневных задач.

Универсальные объектные переменные (т. е. переменные, объявляемые как Object ) могут содержать объекты из любого класса. Generic object variables (that is, variables you declare as Object ) can hold objects from any class. При использовании переменных типа Object может потребоваться выполнить различные действия в зависимости от класса объекта. Например, некоторые объекты могут не поддерживать определенное свойство или метод. When using variables of type Object , you may need to take different actions based on the class of the object; for example, some objects might not support a particular property or method. Visual Basic предоставляет два способа определения типа объекта, хранящегося в объектной переменной: функция TypeName и оператор TypeOf. Is . Visual Basic provides two means of determining which type of object is stored in an object variable: the TypeName function and the TypeOf. Is operator.

TypeName и TypeOf. Рекомендуется TypeName and TypeOf…Is

Функция TypeName возвращает строку и является лучшим выбором, если необходимо сохранить или отобразить имя класса объекта, как показано в следующем фрагменте кода: The TypeName function returns a string and is the best choice when you need to store or display the class name of an object, as shown in the following code fragment:

Оператор TypeOf. Is является лучшим выбором для тестирования типа объекта, так как он гораздо быстрее, чем эквивалентное сравнение строк с помощью TypeName . The TypeOf. Is operator is the best choice for testing an object’s type, because it is much faster than an equivalent string comparison using TypeName . В следующем фрагменте кода используется TypeOf. Is в инструкции If. Then. Else : The following code fragment uses TypeOf. Is within an If. Then. Else statement:

В этом случае следует соблюдать осторожность. A word of caution is due here. Оператор TypeOf. Is возвращает True , если объект относится к конкретному типу или является производным от определенного типа. The TypeOf. Is operator returns True if an object is of a specific type, or is derived from a specific type. Почти все, что выполняется с Visual Basic, включает объекты, которые включают в себя некоторые элементы, которые обычно не считаются объектами, например строками и целыми числами. Almost everything you do with Visual Basic involves objects, which include some elements not normally thought of as objects, such as strings and integers. Эти объекты являются производными от Objectи наследуют от них методы. These objects are derived from and inherit methods from Object. При передаче Integer и вычислении с Object оператор TypeOf. Is возвращает True . When passed an Integer and evaluated with Object , the TypeOf. Is operator returns True . В следующем примере сообщается, что параметр InParam является как Object , так и Integer : The following example reports that the parameter InParam is both an Object and an Integer :

В следующем примере используются как TypeOf. Is , так и TypeName для определения типа объекта, переданного в него в аргументе Ctrl . The following example uses both TypeOf. Is and TypeName to determine the type of object passed to it in the Ctrl argument. TestObject процедура вызывает ShowType с тремя различными видами элементов управления. The TestObject procedure calls ShowType with three different kinds of controls.

Запуск примера To run the example

Создайте новый проект приложения Windows и добавьте в форму элемент управления Button, CheckBox и элемент управления RadioButton. Create a new Windows Application project and add a Button control, a CheckBox control, and a RadioButton control to the form.

С помощью кнопки в форме вызовите процедуру TestObject . From the button on your form, call the TestObject procedure.

Добавьте в форму следующий код: Add the following code to your form:

Как и любой язык программирования, VBA содержит широкий круг типов переменных для написания программ.

Переменные разделяют на глобальные и локальные, их описывают выражением Dim имя as тип.

В языке выделяют следующие типы: Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String, Object, Variant.

Byte целые числа от 0 до 255;
Boolean логические значения — True/False;
Integer целые числа от -32768 до 32767;
Long целые числа от -2147483648 до 2147483647;
Currency вещественные числа (целая часть до 15 цифр, дробная до 4 цифр) от -922337203685477,5808 до 922337203685477,5807;
Single вещественные числа одинарной точности от -3.4e38 до +3.4e38
Double вещественные числа одинарной точности от -3.4e38 до +3.4e38
Date дата и время от 1 Января 100 до 31 Декабря 9999;
String текст
Object объект или ссылка на объект;
Variant объект или ссылка на объект;

Если переменная указана вне функции или модуля и объявлена в разделе Declarations, то она является глобальной или Public и доступ к ней возможен из других модулей.

Переменная типа Private доступна только в пределах одного модуля, но из любой функции данного модуля.

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

Так же существует тип локальной переменной Static, она позволяет сохранять прежнее значение, объявленное при инициализации.

Понравилась статья? Поделить с друзьями:
  • Как узнать сумму ячеек в excel
  • Как узнать сумму чисел в excel
  • Как узнать сколько символов в выделенном тексте word
  • Как узнать сколько процентов составляет число от числа в excel
  • Как узнать сколько процентов составляет число от общей суммы в excel