Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Преобразование типов данных
Для преобразования типов данных предназначены следующие функции:
CBool(<Значение>)
— преобразует число или строку в логический тип данных. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CBool(0) ' Выведет: False
Debug.Print CBool(1) ' Выведет: True
Debug.Print CBool("True") ' Выведет: True
Debug.Print CBool("False") ' Выведет: False
CByte(<Значение>)
— преобразует значение в число типаByte
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CByte(0) ' Выведет: 0
Debug.Print CByte(145.8) ' Выведет: 146
Debug.Print CByte(145.3) ' Выведет: 145
Debug.Print CByte(145.5) ' Выведет: 146
CInt(<Значение>)
— преобразует значение в число типаInteger
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CInt("45") ' Выведет: 45
Debug.Print CInt(145.8) ' Выведет: 146
Debug.Print CInt(145.3) ' Выведет: 145
Debug.Print CInt(145.5) ' Выведет: 146
CLng(<Значение>)
— преобразует значение в число типаLong
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CLng("45,5") ' Выведет: 46
Debug.Print CLng(145.8) ' Выведет: 146
Debug.Print CLng(145.3) ' Выведет: 145
Debug.Print CLng(145.5) ' Выведет: 146
CSng(<Значение>)
— преобразует значение в число типаSingle
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CSng(145) ' Выведет: 145
Debug.Print CSng("45,5") ' Выведет: 45,5
CDbl(<Значение>)
— преобразует значение в число типаDouble
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CDbl(145) ' Выведет: 145
Debug.Print CDbl("45,5") ' Выведет: 45,5
CCur(<Значение>)
— преобразует значение в число типаCurrency
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CCur(145) ' Выведет: 145
Debug.Print CCur("45,5") ' Выведет: 45,5
CDec(<Значение>)
— преобразует значение в число типаDecimal
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CDec(145) ' Выведет: 145
Debug.Print CDec("45,5") ' Выведет: 45,5
CVar(<Значение>)
— преобразует значение в типVariant
. Пример:
Debug.Print TypeName(CVar(12)) ' Выведет: Integer
Debug.Print TypeName(CVar(12.5)) ' Выведет: Double
Debug.Print TypeName(CVar("Строка")) ' Выведет: String
CStr(<Значение>)
— преобразует значение в строку. Пример:
Debug.Print CStr(True) ' Выведет: True
Debug.Print "'" & CStr(145) & "'" ' Выведет: '145'
Debug.Print "'" & CStr(145.5) & "'" ' Выведет: '145,5'
Debug.Print "'" & CStr(-145.5) & "'" ' Выведет: '-145,5'
str(<Число>)
— преобразует число в строку. Первый символ в строке резервируется под знак числа. Если число является положительным, то первый символ будет пробелом, а если отрицательным — то первым символом будет знак минус. Обратите также внимание на то, что при выводе десятичный разделитель отображается в виде точки, а не в виде запятой, как это было при использовании функцииCStr()
. Пример:
Debug.Print "'" & str(145) & "'" ' Выведет: ' 145'
Debug.Print "'" & str(145.5) & "'" ' Выведет: ' 145.5'
Debug.Print "'" & str(-145.5) & "'" ' Выведет: '-145.5'
CDate(<Значение>)
— преобразует значение в типDate
. Если преобразование невозможно возбуждается исключение. Пример:
Debug.Print CDate("Декабрь 21, 2012") ' Выведет: 21.12.2012
В качестве примера рассмотрим возможность сложения двух чисел, введенных пользователем. Как вы уже знаете, вводить данные позволяет функция InputBox()
. Воспользуемся этой функцией для получения чисел от пользователя (листинг 2.4).
Листинг 2.4. Получение данных от пользователя
Dim x, y
x = InputBox("x = ") ' Вводим 5
y = InputBox("y = ") ' Вводим 12
Debug.Print x + y ' Выведет: 512
Результатом выполнения этого кода будет не число, а строка "512". Таким образом, следует запомнить, что функция InputBox()
возвращает результат в виде строки. Чтобы просуммировать два числа, необходимо преобразовать строку в число (листинг 2.5).
Листинг 2.5. Преобразование строки в число
Dim x, y
x = CInt(InputBox("x = ")) ' Вводим 5
y = CInt(InputBox("y = ")) ' Вводим 12
Debug.Print x + y ' Выведет: 17
В этом случае мы получим число 17, как и должно быть. Однако если пользователь вместо числа введет строку, то программа завершится с фатальной ошибкой. Поэтому прежде чем преобразовывать значение в число необходимо проверить его на допустимость. Выполнить проверку возможности преобразования позволяют следующие функции:
IsNumeric(<Значение>)
— возвращает значениеTrue
, если значение можно преобразовать в число, иFalse
— в противном случае:
Debug.Print IsNumeric("10") ' Выведет: True
Debug.Print IsNumeric("10,5") ' Выведет: True
Debug.Print IsNumeric("10.5") ' Выведет: False
Debug.Print IsNumeric("Строка") ' Выведет: False
IsObject(<Переменная>)
— возвращает значениеTrue
, если переменная является объектной, иFalse
— в противном случае:
Dim obj As Object
Debug.Print IsObject(obj) ' Выведет: True
Set obj = Nothing
Debug.Print IsObject(obj) ' Выведет: True
Debug.Print IsObject("Строка") ' Выведет: False
IsEmpty(<Переменная>)
— возвращает значениеTrue
, если переменной не было присвоено значение, иFalse
— в противном случае:
Dim x
Debug.Print IsEmpty(x) ' Выведет: True
x = 10
Debug.Print IsEmpty(x) ' Выведет: False
x = Empty
Debug.Print IsEmpty(x) ' Выведет: True
IsNull(<Переменная>)
— возвращает значениеTrue
, если переменная содержит значениеNull
, иFalse
— в противном случае:
Dim x
Debug.Print IsNull(x) ' Выведет: False
x = Null
Debug.Print IsNull(x) ' Выведет: True
IsDate(<Значение>)
— возвращает значениеTrue
, если значение может быть преобразовано в типDate
, иFalse
— в противном случае:
Dim x
Debug.Print IsNull(x) ' Выведет: False
x = Null
Debug.Print IsNull(x) ' Выведет: True
Переделаем предыдущий пример (листинг 2.5) и используем функцию IsNumeric()
для проверки возможности преобразования введенного пользователем значения в число (листинг 2.6). Код оформим в виде процедуры с названием Сумма()
.
Листинг 2.6. Использование функции IsNumeric()
Sub Тест()
Dim x, y
x = InputBox("x = ") ' Вводим 5
If IsNumeric(x) = False Then
MsgBox "Ошибка. Вы ввели не число"
Exit Sub ' Завершаем выполнение процедуры
End If
y = InputBox("y = ") ' Вводим 12
If IsNumeric(y) = False Then
MsgBox "Ошибка. Вы ввели не число"
Exit Sub ' Завершаем выполнение процедуры
End If
MsgBox "Результат: " & CStr(CInt(x) + CInt(y)) ' Результат: 17
End Sub
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов