Содержание
- Type conversion functions
- Syntax
- Return types
- Remarks
- CBool function example
- CByte function example
- CCur function example
- CDate function example
- CDbl function example
- CDec function example
- CInt function example
- CLng function example
- CSng function example
- CStr function example
- CVar function example
- See also
- Support and feedback
- Функции преобразования типов
- Синтаксис
- Возвращаемые типы
- Примечания
- Пример функции CBool
- Пример функции CByte
- Пример функции CCur
- Пример функции CDate
- Пример функции CDbl
- Пример функции CDec
- Пример функции CInt
- Пример функции CLng
- Пример функции CSng
- Пример функции CStr
- Пример функции CVar
- См. также
- Поддержка и обратная связь
Type conversion functions
Each function coerces an expression to a specific data type.
Syntax
- CBool(expression)
- CByte(expression)
- CCur(expression)
- CDate(expression)
- CDbl(expression)
- CDec(expression)
- CInt(expression)
- CLng(expression)
- CLngLng(expression) (Valid on 64-bit platforms only.)
- CLngPtr(expression)
- CSng(expression)
- CStr(expression)
- CVar(expression)
The required expression argument is any string expression or numeric expression.
Return types
The function name determines the return type as shown in the following:
Function | Return type | Range for expression argument |
---|---|---|
CBool | Boolean | Any valid string or numeric expression. |
CByte | Byte | 0 to 255. |
CCur | Currency | -922,337,203,685,477.5808 to 922,337,203,685,477.5807. |
CDate | Date | Any valid date expression. |
CDbl | Double | -1.79769313486231E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values. |
CDec | Decimal | 79,228,162,514,264,337,593,543,950,335 for zero-scaled numbers, that is, numbers with no decimal places. For numbers with 28 decimal places, the range is 7.9228162514264337593543950335. The smallest possible non-zero number is 0.0000000000000000000000000001. |
CInt | Integer | -32,768 to 32,767; fractions are rounded. |
CLng | Long | -2,147,483,648 to 2,147,483,647; fractions are rounded. |
CLngLng | LongLong | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807; fractions are rounded. (Valid on 64-bit platforms only.) |
CLngPtr | LongPtr | -2,147,483,648 to 2,147,483,647 on 32-bit systems, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 on 64-bit systems; fractions are rounded for 32-bit and 64-bit systems. |
CSng | Single | -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values. |
CStr | String | Returns for CStr depend on the expression argument. |
CVar | Variant | Same range as Double for numerics. Same range as String for non-numerics. |
If the expression passed to the function is outside the range of the data type being converted to, an error occurs.
Conversion functions must be used to explicitly assign LongLong (including LongPtr on 64-bit platforms) to smaller integral types. Implicit conversions of LongLong to smaller integrals are not allowed.
In general, you can document your code using the data-type conversion functions to show that the result of some operation should be expressed as a particular data type rather than the default data type. For example, use CCur to force currency arithmetic in cases where single-precision, double-precision, or integer arithmetic normally would occur.
You should use the data-type conversion functions instead of Val to provide internationally aware conversions from one data type to another. For example, when you use CCur, different decimal separators, different thousand separators, and various currency options are properly recognized depending on the locale setting of your computer.
When the fractional part is exactly 0.5, CInt and CLng always round it to the nearest even number. For example, 0.5 rounds to 0, and 1.5 rounds to 2. CInt and CLng differ from the Fix and Int functions, which truncate, rather than round, the fractional part of a number. Also, Fix and Int always return a value of the same type as is passed in.
Use the IsDate function to determine if date can be converted to a date or time. CDate recognizes date literals and time literals as well as some numbers that fall within the range of acceptable dates. When converting a number to a date, the whole number portion is converted to a date. Any fractional part of the number is converted to a time of day, starting at midnight.
CDate recognizes date formats according to the locale setting of your system. The correct order of day, month, and year may not be determined if it is provided in a format other than one of the recognized date settings. In addition, a long date format is not recognized if it also contains the day-of-the-week string.
A CVDate function is also provided for compatibility with previous versions of Visual Basic. The syntax of the CVDate function is identical to the CDate function; however, CVDate returns a Variant whose subtype is Date instead of an actual Date type. Since there is now an intrinsic Date type, there is no further need for CVDate. The same effect can be achieved by converting an expression to a Date, and then assigning it to a Variant. This technique is consistent with the conversion of all other intrinsic types to their equivalent Variant subtypes.
The CDec function does not return a discrete data type; instead, it always returns a Variant whose value has been converted to a Decimal subtype.
CBool function example
This example uses the CBool function to convert an expression to a Boolean. If the expression evaluates to a nonzero value, CBool returns True, otherwise, it returns False.
CByte function example
This example uses the CByte function to convert an expression to a Byte.
CCur function example
This example uses the CCur function to convert an expression to a Currency.
CDate function example
This example uses the CDate function to convert a string to a Date. In general, hard-coding dates and times as strings (as shown in this example) is not recommended. Use date literals and time literals, such as #2/12/1969# and #4:45:23 PM# , instead.
CDbl function example
This example uses the CDbl function to convert an expression to a Double.
CDec function example
This example uses the CDec function to convert a numeric value to a Decimal.
CInt function example
This example uses the CInt function to convert a value to an Integer.
CLng function example
This example uses the CLng function to convert a value to a Long.
CSng function example
This example uses the CSng function to convert a value to a Single.
CStr function example
This example uses the CStr function to convert a numeric value to a String.
CVar function example
This example uses the CVar function to convert an expression to a Variant.
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.
Источник
Функции преобразования типов
Каждая функция приводит выражение к нужному типу данных.
Синтаксис
- CBool(выражение)
- CByte(выражение)
- CCur(выражение)
- CDate(выражение)
- CDbl(выражение)
- CDec(выражение)
- CInt(выражение)
- CLng(выражение)
- CLngLng(выражение) (действительно только для 64-разрядных платформ).
- CLngPtr(выражение)
- CSng(выражение)
- CStr(выражение)
- CVar(выражение)
Обязательный аргумент выражение — это любое строковое или числовое выражение.
Возвращаемые типы
Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:
Функция | Тип возвращаемых данных | Диапазон выражения-аргумента |
---|---|---|
CBool | Boolean | Любое допустимое строковое или числовое выражение. |
CByte | Byte | От 0 до 255. |
CCur | Currency | От -922 337 203 685 477,5808 до 922 337 203 685 477,5807. |
CDate | Date | Любое допустимое выражение даты. |
CDbl | Double | От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений. |
CDec | Decimal | 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001. |
CInt | Integer | От -32 768 до 32 767, дробная часть округляется. |
CLng | Long | От -2 147 483 648 до 2 147 483 647, дробная часть округляется. |
CLngLng | LongLong | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807; дробная часть округляется. (Действительно только для 64-разрядных платформ). |
CLngPtr | LongPtr | От -2 147 483 648 до 2 147 483 647 для 32-разрядных систем; от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных систем; дробная часть округляется в обоих типах систем. |
CSng | Single | От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений. |
CStr | String | Результат, возвращаемый функцией CStr, зависит от аргумента выражение. |
CVar | Variant | Диапазон совпадает с типом Double для числовых значений и с типом String для нечисловых значений. |
Примечания
Если выражение, переданное в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.
Для явного присвоения значений типа LongLong (включая тип LongPtr на 64-разрядных платформах) целочисленным типам данных меньшего размера должны использоваться функции преобразования. Неявные преобразования типа LongLong в меньшие целочисленные типы не допускаются.
Как правило, функции преобразования типов используются в тексте программ для того, чтобы указать, что результатом той или иной операции должны стать данные определенного типа, а не типа, заданного по умолчанию. Например, с помощью функции CCur можно принудительно перейти к вычислениям в денежном формате в тех случаях, в которых обычно используются действия с числами с обычной точностью, двойной точностью или с целыми числами.
Функции преобразования типа данных следует использовать вместо функции Val для преобразования типов данных в приложениях, поддерживающих различные региональные стандарты. Например, при использовании функции CCur десятичные разделители, разделители групп разрядов и параметры денежных единиц распознаются в соответствии с языковыми и региональными параметрами компьютера.
Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа. Например, 0,5 округляется до 0, а 1,5 — до 2. Функции CInt и CLng отличаются от функций Fix и Int, которые отбрасывают дробную часть числа, а не округляют ее. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.
Для определения возможности преобразования date в дату или время используется функция IsDate. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат. При преобразовании числа в дату преобразуется целая часть числа. Дробная часть преобразуется во время суток, начиная с полуночи.
Функция CDate распознает форматы даты в соответствии с национальной настройкой системы. Если формат передаваемого аргумента не соответствует распознаваемым настройкам даты, функция не сможет определить правильный порядок дней, месяцев и лет. Кроме того, длинный формат даты не распознается, если в нем содержится строка дня недели.
Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic. Синтаксис функции CVDate не отличается от синтаксиса функции CDate; однако функция CVDate возвращает тип Variant, подтипом которого является тип Date, а не собственно тип Date. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает. Такой же результат можно получить, если преобразовать выражение в тип Date и присвоить его типу Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.
Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.
Пример функции CBool
В этом примере функция CBool используется для преобразования выражения в тип Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True, в противном случае она возвращает значение False.
Пример функции CByte
В этом примере функция CByte используется для преобразования выражения в тип Byte.
Пример функции CCur
В этом примере функция CCur используется для преобразования выражения в тип Currency.
Пример функции CDate
В этом примере функция CDate используется для преобразования выражения в тип Date. Как правило, не рекомендуется определять дату и время в виде строк (как показано в этом примере). Вместо этого рекомендуется использовать литералы даты и времени, такие как #2/12/1969# и #4:45:23 PM# .
Пример функции CDbl
В этом примере функция CDbl используется для преобразования выражения в тип Double.
Пример функции CDec
В этом примере функция CDec используется для преобразования выражения в тип Decimal.
Пример функции CInt
В этом примере функция CInt используется для преобразования выражения в тип Integer.
Пример функции CLng
В этом примере функция CLng используется для преобразования выражения в тип Long.
Пример функции CSng
В этом примере функция CSng используется для преобразования выражения в тип Single.
Пример функции CStr
В этом примере функция CStr используется для преобразования выражения в тип String.
Пример функции CVar
В этом примере функция CVar используется для преобразования выражения в тип Variant.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
I am using the very basic coding of VBA for word to create a template that pulls data from other screens in windows. When it pulls the numbers, they are formatted as strings. I now need to get the strings to be converted to doubles, in order to add/ subtract them. I have been trying everything but cannot seem to figure it out.
Me.salesprice = Trim(scrn.GetString(11, 65, 10))
'This would be formatted as 25,000.00
Me.salestax = Trim(scrn.GetString(12, 66, 10))
Me.pastdue = Trim(scrn.GetString(14, 65, 10))
Me.assessedppt = Trim(scrn.GetString(18, 66, 10))
Me.secdep = Trim(scrn.GetString(17, 65, 10))
assessedppt = Convert.ToDouble(Me.assessedppt)
uappt = Convert.ToDouble(Me.uappt)
salesprice = Convert.ToDouble(Me.salesprice)
salestax = Convert.ToDouble(Me.salestax)
pastdue = Convert.ToDouble(Me.pastdue)
lc = Convert.ToDouble(frmDetails.lc)
totalfinance = salesprice + salestax + pastdue - secdep + assessedppt + uappt + lc
totalsalesprice = salesprice + pastdue
ppt = assessedppt + uappt
When I do this, I get the following error:
Compile error: Variable not defined, and it highlights the first
Convert function.
Функции преобразования типов данных в VBA Excel. Наименования функций, синтаксис, типы возвращаемых данных, диапазоны допустимых значений выражения-аргумента.
Синтаксис функций преобразования
Выражение (аргумент) – это любое строковое или числовое выражение, возвращающее значение, входящее в диапазон допустимых значений для аргумента. Выражение может быть представлено переменной или другой функцией.
Если аргумент, переданный в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.
Функции преобразования типов
Наименования функций преобразования типов, типы возвращаемых данных, диапазоны допустимых значений для аргумента:
Функция | Тип данных | Диапазон значений аргумента |
---|---|---|
CBool | Boolean | Любое допустимое строковое или числовое выражение. |
CByte | Byte | От 0 до 255. |
CCur | Currency | От -922 337 203 685 477,5808 до 922 337 203 685 477,5807. |
CDate | Date | Любое допустимое выражение даты. |
CDbl | Double | От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений. |
CDec | Decimal | 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001. |
CInt | Integer | От -32 768 до 32 767, дробная часть округляется. |
CLng | Long | От -2 147 483 648 до 2 147 483 647, дробная часть округляется. |
CSng | Single | От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений. |
CStr | String | Результат, возвращаемый функцией CStr, зависит от аргумента Выражение. |
CVar | Variant | Диапазон совпадает с типом Double для числовых значений и с типом String для нечисловых значений. |
Дополнительно для VBA7:
Функция | Тип данных | Диапазон значений аргумента |
---|---|---|
CLngLng | LongLong | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, дробная часть округляется. Действительно только для 64-разрядных платформ. |
CLngPtr | LongPtr | От -2 147 483 648 до 2 147 483 647 для 32-разрядных платформ, от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных платформ, дробная часть округляется в обоих типах систем. |
Примеры преобразования типов
Функция CBool
Функция CBool используется для преобразования выражений в тип данных Boolean.
Dim a a = CBool(10) ‘Результат: True a = CBool(0) ‘Результат: False a = CBool(«True») ‘Результат: True a = CBool(«Test») ‘Результат: Error Dim a, b, c a = «Test1» b = «Test2» c = CBool(a = b) ‘Результат: False c = CBool(a <> b) ‘Результат: True |
Функция CByte
Функция CByte используется для преобразования выражений в тип данных Byte.
Dim a, b, c a = 654 b = 3.36 c = a / b ‘Результат: 194,642857142857 c = CByte(c) ‘Результат: 195 c = a * b ‘Результат: 2197,44 c = CByte(c) ‘Результат: Error |
Функция CCur
Функция CCur используется для преобразования выражений в тип данных Currency.
Dim a, b, c a = 254.6598254 b = 569.2156843 c = a + b ‘Результат: 823,8755097 c = CCur(a + b) ‘Результат: 823,8755 |
Функция CDate
Функция CDate используется для преобразования выражений в тип данных Date. Она распознает форматы даты в соответствии с национальной настройкой системы.
Dim a As String, b As Date, c As Double a = «28.01.2021» b = CDate(a) ‘Результат: #28.01.2021# c = CDbl(b) ‘Результат: 44224 Dim a a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05# a = CDate(44298) ‘Результат: #12.04.2021# a = CDate(0.63895) ‘Результат: #15:20:05# |
Функция CDbl
Функция CDbl используется для преобразования выражений в тип данных Double.
Dim a As String, b As String, c As Double a = «45,3695423» b = «548955,756» c = CDbl(a) + CDbl(b) ‘Результат: 549001,1255423 |
Примечание
Eсли основной язык системы – русский, при записи в редакторе VBA Excel дробного числа в виде текста, ставим в качестве разделителя десятичных разрядов – запятую. Проверьте разделитель по умолчанию для своей национальной системы:
MsgBox Application.DecimalSeparator
Функция CDec
Функция CDec используется для преобразования выражений в тип данных Decimal.
Dim a As String, b As Double, c a = «5,9228162514264337593543950335» b = 5.92281625142643 c = CDec(a) — CDec(b) ‘Результат: 0,0000000000000037593543950335 Dim a As Double, b As String, c a = 4.2643E—14 b = CStr(a) ‘Результат: «4,2643E-14» c = CDec(a) ‘Результат: 0,000000000000042643 |
Функция CInt
Функция CInt используется для преобразования выражений в тип данных Integer.
Dim a As String, b As Integer a = «2355,9228» b = CInt(a) ‘Результат: 2356 |
Функция CLng
Функция CLng используется для преобразования выражений в тип данных Long.
Dim a As Date, b As Long a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05# b = CLng(a) ‘Результат: 44299 a = CDate(b) ‘Результат: #13.04.2021# |
Функция CSng
Функция CSng используется для преобразования выражений в тип данных Single.
Dim a As String, b As Single a = «3,2365625106» b = CSng(a) ‘Результат: 3,236562 |
Функция CStr
Функция CStr используется для преобразования выражений в тип данных String.
Dim a As Single, b As String a = 5106.23 b = CStr(a) ‘Результат: «5106,23» |
Функция CVar
Функция CVar используется для преобразования выражений в тип данных Variant.
Dim a As Double, b As String, c a = 549258.232546 b = «Новое сообщение» c = CVar(a) ‘Результат: 549258,232546 (Variant/Double) c = CVar(b) ‘Результат: «Новое сообщение» (Variant/String) |
Функции преобразования типов данных используются в тексте процедур VBA Excel для того, чтобы указать, что результатом выполнения той или иной операции должны стать данные определенного типа, отличающегося от типа, заданного по умолчанию.
Каждая функция привнося выражение к определенному тип данных.
Синтаксис
CBool(
выражение
)
CByte(
выражение
)
CCur(
выражение
)
CDate(
выражение
)
CDbl(
выражение
)
CDec(
выражение
)
CInt(
выражение
)
CLng(
выражение
)
CSng(
выражение
)
CStr(
выражение
)
CVar(
выражение
)
Обязательный аргумент выражениеаргумент — это любое строковое выражение или числовое выражение.
Возвращаемые типы
Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:
Функция |
Тип возвращаемого значения |
Диапазон аргумента |
CBool |
Boolean |
Любое допустимое строковое или числовое выражение. |
CByte |
Byte |
От 0 до 255. |
CCur |
Currency |
От -922 337 203 685 477,5808 до 922 337 203 685 477,5807. |
CDate |
Date |
Любое допустимое выражение даты. |
CDbl |
Double |
От -1,79769313486231E308 до |
CDec |
Decimal |
+/-79 228 162 514 264 337 593 543 950 335 для чисел без дробной части. Для чисел с 28 десятичными знаками допустимый диапазон составляет |
CInt |
Integer |
От -32 768 до 32 767, дробная часть округляется. |
CLng |
Long |
От -2 147 483 648 до 2 147 483 647, дробная часть округляется. |
CSng |
Single |
От -3,402823E38 до -1,401298E-45 для отрицательных значений и от 1,401298E-45 до 3,402823E38 для положительных. |
CStr |
String |
Результат, возвращаемый функцией CStr, зависит от аргумента выражение. |
CVar |
Variant |
Тот же диапазон, что и для числов Double. Такой же диапазон, как и для строк для не числов. |
Замечания
Если передаваемое функции выражение находится за пределами диапазона типа данных, в который оно преобразуется, возникает ошибка.
Как правило, функции преобразования типов используются в тексте программ для того, чтобы указать, что результатом той или иной операции должны стать данные определенного типа, а не типа, заданного по умолчанию. Например, с помощью функции CCur можно принудительно перейти к вычислениям в денежном формате в тех случаях, в которых обычно используются действия с числами с обычной точностью, двойной точностью или с целыми числами.
Функции преобразования типа данных следует использовать вместо функции Val для преобразования типов данных в приложениях, поддерживающих различные региональные стандарты. Например, при использовании функции CCur десятичные разделители, разделители групп разрядов и параметры денежных единиц распознаются в соответствии с языковыми и региональными параметрами компьютера.
Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа. Например, 0,5 округляется до 0, а 1,5 — до 2. В отличие от функций CInt и CLng, в функциях Fix и Int дробная часть не округляется, а отбрасывается. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.
Для определения возможности преобразования даты в дату или время используется функция IsDate. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат. При преобразовании числа в дату преобразуется целая часть числа. Дробная часть преобразуется во время суток, начиная с полуночи.
CDate распознает форматы даты в соответствии с языковые стандарты системным параметром. Правильный порядок дат, месяца и года может быть определен не в том формате, который не является распознаемой датой. Кроме того, длинный формат даты не распознается, если он также содержит строку дней недели.
Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic. Синтаксис функции CVDate идентичен синтаксису функции CDate, однако функция CVDate возвращает не результат типа Date, а результат типа Variant с подтипом Date. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает. Того же результата можно добиться, преобразовав выражение в тип Date и присвоив это значение переменной типа Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.
Примечание: Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.
Примеры запросов
|
|
SELECT SalePrice,FinalPrice,CBool(SalePrice>FinalPrice) AS Expr1 FROM productSales; |
Возвращает значения «ЦенаПродажи», «ПоследняяЦена» и оценивает, превышает ли Цена конечная цена. Возвращает «-1», если истина, и «0», если ложь. |
SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле «Количество» в формат «Количество» и отображает в столбце Expr1 значение «ProductID», преобразует значения в поле «Количество» в формат «Валюта» и отображает в столбце Expr1. |
SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения поля DateofSale в формат Date и отображает значения в столбце Expr1. |
SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в формат Double и отображает значения в столбце Expr1. |
SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в формат Integer и отображает значения в столбце Expr1. |
SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в формат Long и отображает в столбце Expr1. |
SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле «Скидка» в single format и отображает в столбце «Expr1». |
SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле Discount в строковом формате и отображает значения в столбце Expr1. |
SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales; |
Возвращает значение «ProductID», преобразует значения в поле «Скидка» в значение Double для числных значений и String для не числных значений. |
Примеры VBA
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
Функция CBool
Совет: В Access 2010 и более поздних версиях есть построитель выражений с поддержкой IntelliSense, который помогает создавать выражения.
В этом примере функция CBool используется для преобразования выражения в тип Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True; в противном случае она возвращает значение False.
Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.
Функция CByte
В этом примере функция CByte используется для преобразования выражения в тип Byte.
Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.
Функция CCur
В этом примере функция CCur используется для преобразования выражения в тип Currency.
Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2)
' Convert result of MyDouble * 2 (1086.429176) to a
' Currency (1086.4292).
Функция CDate
В этом примере функция CDate используется для преобразования выражения в тип Date. Как правило, не рекомендуется определять дату и время в виде строк (как показано в этом примере). Вместо этого пользуйтесь литералами даты и времени, например #2/12/1969# и #4:45:23 PM#.
Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969"
' Convert to Date data type.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM"
' Convert to Date data type.
MyShortTime = CDate(MyTime)
Функция CDbl
В этом примере функция CDbl используется для преобразования выражения в тип Double.
Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)
Функция CDec
В этом примере функция CDec используется для преобразования выражения в тип Decimal.
Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.
Функция CInt
В этом примере функция CInt используется для преобразования выражения в тип Integer.
Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.
Функция CLng
В этом примере функция CLng используется для преобразования выражения в тип Long.
Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)
' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)
' MyLong2 contains 25428.
Функция CSng
В этом примере функция CSng используется для преобразования выражения в тип Single.
Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2)
' MySingle2 contains 75.34216.
Функция CStr
В этом примере функция CStr используется для преобразования выражения в тип String.
Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".
Функция CVar
В этом примере функция CVar используется для преобразования выражения в тип Variant.
Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000.
In this VBA Tutorial, you learn how to convert strings to numbers of the Byte, Integer, Long, Single, Double, Currency and Decimal data types.
This VBA Tutorial is accompanied by an Excel workbook containing the macros, data and formulas I use in the examples below. You can get immediate access to this example workbook by subscribing to the Power Spreadsheets Newsletter.
Use the following Table of Contents to navigate to the section that interests you.
Related VBA and Macro Tutorials
The following VBA and Macro Tutorials may help you better understand and implement the contents below:
- General VBA constructs and structures:
- Learn about essential VBA terms here.
- Learn how to work in the Visual Basic Editor here.
- Learn how to create Sub procedures here.
- Learn how to create Function procedures here.
- Learn how to work with variables here.
- Learn about VBA data types here.
- Learn about the Range object here.
- Tutorials about other useful topics:
- Learn how to work with the IFERROR worksheet function here.
You can find additional VBA and Macro Tutorials in the Archives.
#1: Convert String to Byte
VBA code to convert String to Byte
To convert a string to a number of the Byte data type, use the following statement:
CByte(String)
Process followed by VBA to convert String to Byte
To convert a string to a number of the Byte data type, use the CByte function to convert the String to a number of the Byte data type.
VBA statement explanation
- Item: CByte.
- VBA construct: CByte function.
- Description: The CByte function coerces String to the Byte data type.
CByte is usually able to carry out internationally-aware conversions from the String to the Byte data type. In other words, CByte generally recognizes between the different decimal/thousand separators and currency options that depend on your computer’s locale.
The Byte data type can hold numbers ranging from 0 to 255. If String is outside this range, an error occurs.
- Item: String.
- VBA construct: String expression and expression argument of the CByte function.
- Description: String is the string or numeric expression you convert to the Byte data type. If you explicitly declare a variable to represent String, use the Variant data type.
Macro example to convert String to Byte
The following macro example, a User-Defined Function, converts a string passed as argument (myString) to Byte.
Function stringToByte(myString As Variant) 'source: https://powerspreadsheets.com/ 'converts String to Byte 'for further information: https://powerspreadsheets.com/vba-string-to-number/ 'convert String to Byte stringToByte = CByte(myString) End Function
Effects of executing macro example to convert String to Byte
The following image illustrates the results of using the macro example in a worksheet formula. For these purposes:
- Column A contains a numeric string.
- Column B contains a worksheet formula that uses the UDF example.
When String is outside the range of Byte, the worksheet formula returns the #VALUE! error.
- Column C displays the worksheet formula used in column B.
#2: Convert String to Integer
VBA code to convert String to Integer
To convert a string to a number of the Integer data type, use the following statement:
CInt(String)
Process followed by VBA to convert String to Integer
To convert a string to a number of the Integer data type, use the CInt function to convert the String to a number of the Integer data type.
VBA statement explanation
- Item: CInt.
- VBA construct: CInt function.
- Description: The CInt function coerces String to the Integer data type.
If String contains a fraction, CInt rounds it. If this fraction is precisely 0.5, CInt rounds to the nearest even number. For example:
- 0.5 is rounded to 0.
- Both 1.5 and 2.5 are rounded to 2.
- Both 3.5 and 4.5 are rounded to 4.
- CInt is usually able to carry out internationally-aware conversions from the String to the Integer data type. In other words, CInt generally recognizes between the different decimal/thousand separators and currency options that depend on your computer’s locale.
The Integer data type can hold numbers ranging from -32,768 to 32,767. If String is outside this range, an error occurs.
- Item: String.
- VBA construct: String expression and expression argument of the CInt function.
- Description: String is the string or numeric expression you convert to the Integer data type. If you explicitly declare a variable to represent String, use the Variant data type.
Macro example to convert String to Integer
The following macro example, a User-Defined Function, converts a string passed as argument (myString) to Integer.
Function stringToInteger(myString As Variant) 'source: https://powerspreadsheets.com/ 'converts String to Integer 'for further information: https://powerspreadsheets.com/vba-string-to-number/ 'convert String to Integer stringToInteger = CInt(myString) End Function
Effects of executing macro example to convert String to Integer
The following image illustrates the results of using the macro example in a worksheet formula. For these purposes:
- Column A contains a numeric string.
- Column B contains a worksheet formula that uses the UDF example.
When String is outside the range of Integer, the worksheet formula returns the #VALUE! error. Additionally, if String contains a fraction that’s precisely 0.5, the UDF rounds to the nearest even number.
- Column C displays the worksheet formula used in column B.
#3: Convert String to Long
VBA code to convert String to Long
To convert a string to a number of the Long data type, use the following statement:
CLng(String)
Process followed by VBA to convert String to Long
To convert a string to a number of the Long data type, use the CLng function to convert the String to a number of the Integer data type.
VBA statement explanation
- Item: CLng.
- VBA construct: CLng function.
- Description: The CLng function coerces String to the Long data type.
If String contains a fraction, CLng rounds it. If this fraction is precisely 0.5, CLng rounds to the nearest even number. For example:
- 0.5 is rounded to 0.
- Both 1.5 and 2.5 are rounded to 2.
- Both 3.5 and 4.5 are rounded to 4.
CLng is usually able to carry out internationally-aware conversions from the String to the Long data type. In other words, CLng generally recognizes between the different decimal/thousand separators and currency options that depend on your computer’s locale.
The Long data type can hold numbers ranging from -2,147,483,648 to 2,147,483,647. If String is outside this range, an error occurs.
- Item: String.
- VBA construct: String expression and expression argument of the CLng function.
- Description: String is the string or numeric expression you convert to the Long data type. If you explicitly declare a variable to represent String, use the Variant data type.
Macro example to convert String to Long
The following macro example, a User-Defined Function, converts a string passed as argument (myString) to Long.
Function stringToLong(myString As Variant) 'source: https://powerspreadsheets.com/ 'converts String to Long 'for further information: https://powerspreadsheets.com/vba-string-to-number/ 'convert String to Long stringToLong = CLng(myString) End Function
Effects of executing macro example to convert String to Long
The following image illustrates the results of using the macro example in a worksheet formula. For these purposes:
- Column A contains a numeric string.
- Column B contains a worksheet formula that uses the UDF example.
When String is outside the range of Long, the worksheet formula returns the #VALUE! error. Additionally, if String contains a fraction that’s precisely 0.5, the UDF rounds to the nearest even number.
- Column C displays the worksheet formula used in column B.
#4: Convert String to Single
VBA code to convert String to Single
To convert a string to a number of the Single data type, use the following statement:
CSng(String)
Process followed by VBA to convert String to Single
To convert a string to a number of the Single data type, use the CSng function to convert the String to a number of the Single data type.
VBA statement explanation
- Item: CSng.
- VBA construct: CSng function.
- Description: The CSng function coerces String to the Single data type.
CSng is usually able to carry out internationally-aware conversions from the String to the Single data type. In other words, CSng generally recognizes between the different decimal/thousand separators and currency options that depend on your computer’s locale.
The Single data type can hold floating-point numbers ranging from:
- -3.402823E38 to -1.401298E-45 for negative values; and
- 1.401298E-45 to 3.402823E38 for positive values.
If String is outside the required range, an error occurs.
- Item: String.
- VBA construct: String expression and expression argument of the CSng function.
- Description: String is the string or numeric expression you convert to the Single data type. If you explicitly declare a variable to represent String, use the Variant data type.
Macro example to convert String to Single
The following macro example, a User-Defined Function, converts a string passed as argument (myString) to Single.
Function stringToSingle(myString As Variant) 'source: https://powerspreadsheets.com/ 'converts String to Single 'for further information: https://powerspreadsheets.com/vba-string-to-number/ 'convert String to Single stringToSingle = CSng(myString) End Function
Effects of executing macro example to convert String to Single
The following image illustrates the results of using the macro example in a worksheet formula. For these purposes:
- Column A contains a numeric string.
- Column B contains a worksheet formula that uses the UDF example.
When String is outside the range of Single, the worksheet formula returns the #VALUE! error.
- Column C displays the worksheet formula used in column B.
#5: Convert String to Double
VBA code to convert String to Double
To convert a string to a number of the Double data type, use the following statement:
CDbl(String)
Process followed by VBA to convert String to Double
To convert a string to a number of the Double data type, use the CDbl to convert the String to a number of the Double data type.
VBA statement explanation
- Item: CDbl.
- VBA construct: CDbl function.
- Description: The CDbl function coerces String to the Double data type.
CDbl is usually able to carry out internationally-aware conversions from the String to the Double data type. In other words, CDbl generally recognizes between the different decimal/thousand separators and currency options that depend on your computer’s locale.
The Double data type can hold floating-point numbers ranging from:
- -1.79769313486231E308 to -4.94065645841247E-324 for negative values; and
- 4.94065645841247E-324 to 1.79769313486232E308 for positive values.
If String is outside the required range, an error occurs.
- Item: String.
- VBA construct: String expression and expression argument of the CDbl function.
- Description: String is the string or numeric expression you convert to the Double data type. If you explicitly declare a variable to represent String, use the Variant data type.
Macro example to convert String to Double
The following macro example, a User-Defined Function, converts a string passed as argument (myString) to Double.
Function stringToDouble(myString As Variant) 'source: https://powerspreadsheets.com/ 'converts String to Double 'for further information: https://powerspreadsheets.com/vba-string-to-number/ 'convert String to Double stringToDouble = CDbl(myString) End Function
Effects of executing macro example to convert String to Double
The following image illustrates the results of using the macro example in a worksheet formula. For these purposes:
- Column A contains a numeric string.
- Column B contains a worksheet formula that uses the UDF example.
When String is outside the range of Double, the worksheet formula returns the #VALUE! error.
- Column C displays the worksheet formula used in column B.
#6: Convert String to Currency
VBA code to convert String to Currency
To convert a string to a number of the Currency data type, use the following statement:
CCur(String)
Process followed by VBA to convert String to Currency
To convert a string to a number of the Currency data type, use the CCur to convert the String to a number of the Currency data type.
VBA statement explanation
- Item: CCur.
- VBA construct: CCur function.
- Description: The CCur function coerces String to the Currency data type.
CCur is usually able to carry out internationally-aware conversions from the String to the Currency data type. In other words, CCur generally recognizes between the different decimal/thousand separators and currency options that depend on your computer’s locale.
The Currency data type holds integers scaled by 10,000. This results in Currency holding fixed-point numbers with 15 digits to the left of the decimal point and 4 digits to the right of the decimal point. Therefore, Currency can hold numbers ranging from -922,337,203,685,477.5808 to 922,337,203,685,477.5807. If String is outside this range, an error occurs.
- Item: String.
- VBA construct: String expression and expression argument of the CCur function.
- Description: String is the string or numeric expression you convert to the Currency data type. If you explicitly declare a variable to represent String, use the Variant data type.
Macro example to convert String to Currency
The following macro example, a User-Defined Function, converts a string passed as argument (myString) to Currency.
Function stringToCurrency(myString As Variant) 'source: https://powerspreadsheets.com/ 'converts String to Currency 'for further information: https://powerspreadsheets.com/vba-string-to-number/ 'convert String to Currency stringToCurrency = CCur(myString) End Function
Effects of executing macro example to convert String to Currency
The following image illustrates the results of using the macro example in a worksheet formula. For these purposes:
- Column A contains a numeric string.
- Column B contains a worksheet formula that uses the UDF example.
When String is outside the range of Currency, the worksheet formula returns the #VALUE! error.
- Column C displays the worksheet formula used in column B.
#7: Convert String to Decimal
VBA code to convert String to Decimal
To convert a string to a number of the Decimal data type, use the following statement:
CDec(String)
Process followed by VBA to convert String to Decimal
To convert a string to a number of the Decimal data type, use the CDec function to convert the String to a number of the Decimal data type.
VBA statement explanation
- Item: CDec.
- VBA construct: CDec function.
- Description: From a broad perspective, the CDec function coerces String to the Decimal data subtype of the Variant data type. In other words, CDec doesn’t return a discrete data type, but rather a Variant converted to the Decimal subtype.
CDec is usually able to carry out internationally-aware conversions from the String to the Decimal data type. In other words, CDec generally recognizes between the different decimal/thousand separators and currency options that depend on your computer’s locale.
The Decimal data type holds integers scaled by a variable power of 10. This power of 10 specifies the number of digits to the right of the decimal point. Therefore, the value ranges Decimal can hold are as follows:
- When working with a scale of 0, which results in no decimal places: -79,228,162,514,264,337,593,543,950,335 to 79,228,162,514,264,337,593,543,950,335.
- When working with 28 decimal places:
- The largest and smallest values are +7.9228162514264337593543950335 and -7.9228162514264337593543950335.
- The smallest non-zero values are -0.0000000000000000000000000001 and 0.0000000000000000000000000001.
If String is outside the required range, an error occurs.
- Item: String.
- VBA construct: String expression and expression argument of the CDec function.
- Description: String is the string or numeric expression you convert to the CDec data type. If you explicitly declare a variable to represent String, use the Variant data type.
Macro example to convert String to Decimal
The following macro example, a User-Defined Function, converts a string passed as argument (myString) to Decimal.
Function stringToDecimal(myString As Variant) 'source: https://powerspreadsheets.com/ 'converts String to Decimal 'for further information: https://powerspreadsheets.com/vba-string-to-number/ 'convert String to Decimal stringToDecimal = CDec(myString) End Function
Effects of executing macro example to convert String to Decimal
The following image illustrates the results of using the macro example in a worksheet formula. For these purposes:
- Column A contains a numeric string.
- Column B contains a worksheet formula that uses the UDF example.
When String is outside the range of Decimal, the worksheet formula returns the #VALUE! error.
- Column C displays the worksheet formula used in column B.
В этой короткой заметке нашего курса мы поговорим про то, как можно в Excel преобразовать текст в число (или вообще весь столбец или строку в числа). На практике такая задача встречается часто, поэтому предлагаю с порога перейти к делу.
А если у вас останутся вопросы или захочется что-то добавить – добро пожаловать в комментарии к этой статье. Там можно помочь тысячам других читателей нашего портала WiFiGid.
Содержание
- Проблема
- Главный способ – Как преобразовать ячейку в число?
- Как преобразовать в число весь столбец или всю строку?
- Другие способы
- Способ 2 – Инструменты
- Способ 3 – Сообщение об ошибке
- Способ 4 – Формула
- Способ 5 – Специальная вставка и другие странности
- Видео по теме
- Задать вопрос автору статьи
Проблема
Суть проблемы: обычно при вставке чего-то в лист Excel данные превращаются в текст (даже если изначально это было числом). Если затем эту ячейку обернуть в какую-то формулу, то формула выдаст ошибку, так как предполагалось, что на вход все-таки будет подано число. Решение тут простое – нужно просто преобразовать эти ячейки в число, чем мы и займёмся ниже.
А еще бонус для различения «на глаз» чисел и текст: по умолчанию они имеют разное выравнивание (числа вправо, а текст влево):
Главный способ – Как преобразовать ячейку в число?
- Выделяем эту ячейку (а можно сразу и несколько ячеек).
- Щелкаем по выделенным ячейкам правой кнопкой мыши и выбираем пункт «Формат ячеек».
- Обычно здесь стоит формат «Общий», который и может распознавать числа как строки. Переключаем здесь вручную на «Числовой».
Все! С этого момента ячейка является числом и ее можно включать в любые формулы.
Если вдруг вылетела ошибка, скорее всего в вашем «числе» содержатся лишние знаки вроде пробела или еще какой текстовой ерунды. Скопируйте текст из любой проблемной ячейки в тот же Блокнот и там просмотрите каждый символ (просто там удобнее).
Как преобразовать в число весь столбец или всю строку?
Так как функция «Формата ячеек» применима к любому числу выделенных ячеек, так почем бы нам сразу не выделить целый столбец или строку. В Excel для этого есть удобные способы:
- Щелкните по заголовку столбца (A, B, C…) – выделится целый столбец. А если зажать кнопку Ctrl, то можно выделить несколько столбцов.
- Щелкните по заголовку строки (1, 2, 3…) – выделится целая строка. А если зажать кнопку Ctrl, то можно выделить несколько строк.
Получилось выделить? А дальше все по накатанной как было описано разделом выше – щелкнули правой кнопкой мыши, «Формат ячеек», выбрали «Числовой». И весь ваш столбец или строка с этого момента является числовым.
Все остальные разновидности являются по сути способами выделения ячеек в Excel, а про это у нас есть отдельная большая статья.
Другие способы
На самом деле способ, описанный выше, у меня работал всегда и везде. Другими вариантами даже не приходилось пользоваться. Но чтобы эту статью увидело больше человек, придется писать и другие странные варианты. Кого устраивает вариант выше, все остальное можете смело пропускать.
Способ 2 – Инструменты
Все инструменты в Excel дублируются. Разумеется, они просто обязаны быть в ленте инструментов. На «Главной» вкладке можно сразу найти выбор формата (ориентируемся на слово «Общий», а там раскрываем список и находим «Числовой»).
Способ 3 – Сообщение об ошибке
Если мы используем ячейку в какой-то формуле, в которой должны использовать исключительно числа, а в итоге получили ошибку, то можно щелкнуть по значку этой ошибки и выбрать «Преобразовать в число».
Способ 4 – Формула
Для преобразования чисел в текст в Excel используется формула ТЕКСТ, а вот обратной функции я чего-то не нашел. Но можно проделать трюк с двойным отрицание. Если поставить два минуса в формуле перед вашей ячейкой, то, по сути, произойдет двойное умножение на -1 этой ячейки, что в конечном итоге даст то же самое число. Еще этот способ можно как раз назвать умножением на число – в этом случае текст сам преобразуется в число. Итого конечная формула у вас может выглядеть примерно так (ячейку используем свою):
=–А2
Способ 5 – Специальная вставка и другие странности
А еще в Excel уже на этапе вставки можно выбрать формат вставляемого значения. Для вставки чисел щелкаем правой кнопкой мыши по стартовой для вставки ячейке и выбираем «Специальная вставка», а из того меню еще раз «Специальная вставка» и ставим операцию «Умножить»… А нужно ли это вам? Лично я думаю, что метод бесполезный, но раз его пишут все, то тут тоже для умного словца черкану, а там уже думайте сами с этими экспериментами. Еще раз – главный способ является самым полезным из всех.
Сюда же можно было вспомнить про функцию разделения текста по столбцам или использования макросов, но если оно вам действительно нужно – напишите об этом в комментариях с формулировкой своей задачи, после чего я пойму, что другие способы вам действительно не подходят
Видео по теме
VBA CDBL is an inbuilt data type conversion function. The use of this function is that it converts the data type of any given variable’s value into a Double data type. This function only takes a single argument: the variable’s value.
In VBA, “CDBL” stands for “Convert to Double.” This function converts the given number to a Double data type. Take a look at the syntax of the CDBL function.
- The expression is the value we are trying to convert to a Double data type.
We can convert any floating number stored as other than the Double data type by applying the CDBL function.
Point to Remember Here: We can convert only numerical values to Double data type. So, we cannot convert anything other than numerical value to double type, so we show “Type Mismatch Error in VBAWhen we assign a value to a variable that is not of its data type, we get Type mismatch Error or Error code 13. For example, if we assign a decimal or long value to an integer data type variable, we will get this error (Error Code 13) when we run the code.read more” like the below.
Table of contents
- Excel VBA CDBL Function
- Have you ever used a double data type in VBA coding?
- Examples to Use VBA CDBL Function
- Example #1
- Example #2
- Things to Remember
- Recommended Articles
Have you ever used a double data type in VBA coding?
If not, it is worth having a look at it now. “Double” is the data type used to store the decimal position of the number. We can have up to 13 floating decimal numbers.
For example, look at the below VBA codeVBA code refers to a set of instructions written by the user in the Visual Basic Applications programming language on a Visual Basic Editor (VBE) to perform a specific task.read more.
In the above, we have defined the variable (k) type as “Integer.” Dim k As Integer
Next, we have assigned the value as k = 25.4561248694615.
When we run the code, we will get the result as follows.
We got the result as 25 since we have defined the variable as Integer VBA roundRound function in VBA is a mathematical function that rounds up or down the given number to the specific set of decimal places specified by the user to ease calculation.read more to the nearest integer value.
We need to change the variable type from Integer to Double to show the result.
It should give us the exact number we assigned to the variable.
Keeping this in mind, we can also convert all the fraction numbers stored as a non-double data type.
Examples to Use VBA CDBL Function
You can download this VBA CDBL Function Template here – VBA CDBL Function Template
Example #1
To start the proceedings, let’s look at the code below.
Code:
Sub Double_Example1() Dim k As String k = 48.14869569 MsgBox k End Sub
Now, we will run the code and see what happens.
Even though the VBA variable type is “String,” it still shows the decimal values because String can be of any data type, decimal or floating numbers shown as it is.
Now, we will change the vba data type from string to IntegerThe «CINT» function in VBA can be used to convert string data type variables to integer data types. It is a built-in function known as the data type conversion function that can be used as macro code.read more.
Code:
Sub Double_Example1() Dim k As Integer k = 48.14869569 MsgBox k End Sub
Now, we will run the code and see what happens.
It is where the CDBL function plays a vital role in converting the Integer data type to Double. So, the below code is the same for you.
Code:
Sub Double_Example1() Dim IntegerNumber As String Dim DoubleNumber As Double IntegerNumber = 48.14869569 DoubleNumber = CDbl(IntegerNumber) MsgBox DoubleNumber End Sub
It will convert the String data type value to Double.
Example #2
Now, let’s convert the number 854.6947, stored as a Variant, to a Double data type.
Code:
Sub Double_Example2() Dim VaraintNumber Dim DoubleNumber As Double VaraintNumber = 854.6947 DoubleNumber = CDbl(VaraintNumber) MsgBox DoubleNumber End Sub
The first variable we have declared as “Variant.” Dim VaraintNumber.
Note: When the variable type is not declared, it becomes a universal data type Variant.
Next, we have declared one more variable, i.e., Dim DoubleNumber As Double.
For the first variable, VaraintNumber, we have assigned the value as 854.6947.
Using the second variable, we have applied the CDBL function to convert the Variant value to a Double data type.
DoubleNumber = CDbl(VaraintNumber)
The final part is to show the result in the message box. MsgBox DoubleNumber
Now, we will run the code to see the result.
Things to Remember
- A Double data type can accept only numerical numbers.
- If we supply the text value, it will cause an error of “Type Mismatch.”
- A Double data type can display only 13 digits of floating numbers.
Recommended Articles
This article has been a guide to VBA CDBL. Here, we learn how to use the VBA CDBL function to convert the value to Double data type, along with some simple to advanced examples. Below are some useful Excel articles related to VBA: –
- How to Declare VBA Global Variables?
- VBA Data Type
- Transpose in VBA
- VBA Switch Function
При импорте файлов или копировании данных с числовыми значениями часто возникает проблема: число преобразуется в текст. В результате формулы не работают, вычисления становятся невозможными. Как это быстро исправить? Сначала посмотрим, как исправить ошибку без макросов.
Как преобразовать текст в число в Excel
Excel помогает пользователю сразу определить, значения в ячейках отформатированы как числа или как текст. Числовые форматы выравниваются по правому краю, текстовые – по левому.
Когда при импорте файлов или сбое в Excel числовой формат становится текстовым, в левом верхнем углу ячеек появляется зеленый треугольничек. Это знак ошибки. Ошибка также возникает, если перед числом поставить апостроф.
Способов преобразования текста в число существует несколько. Рассмотрим самые простые и удобные.
- Использовать меню кнопки «Ошибка». При выделении любой ячейки с ошибкой слева появляется соответствующий значок. Это и есть кнопка «Ошибка». Если навести на нее курсор, появится знак раскрывающегося меню (черный треугольник). Выделяем столбец с числами в текстовом формате. Раскрываем меню кнопки «Ошибка». Нажимаем «Преобразовать в число».
- Применить любые математические действия. Подойдут простейшие операции, которые не изменяют результат (умножение / деление на единицу, прибавление / отнимание нуля, возведение в первую степень и т.д.).
- Добавить специальную вставку. Здесь также применяется простое арифметическое действие. Но вспомогательный столбец создавать не нужно. В отдельной ячейке написать цифру 1. Скопировать ячейку в буфер обмена (с помощью кнопки «Копировать» или сочетания клавиш Ctrl + C). Выделить столбец с редактируемыми числами. В контекстном меню кнопки «Вставить» нажать «Специальная вставка». В открывшемся окне установить галочку напротив «Умножить». После нажатия ОК текстовый формат преобразуется в числовой.
- Удаление непечатаемых символов. Иногда числовой формат не распознается программой из-за невидимых символов. Удалим их с помощью формулы, которую введем во вспомогательный столбец. Функция ПЕЧСИМВ удаляет непечатаемые знаки. СЖПРОБЕЛЫ – лишние пробелы. Функция ЗНАЧЕН преобразует текстовый формат в числовой.
- Применение инструмента «Текст по столбцам». Выделяем столбец с текстовыми аргументами, которые нужно преобразовать в числа. На вкладке «Данные» находим кнопку «Текст по столбцам». Откроется окно «Мастера». Нажимаем «Далее». На третьем шаге обращаем внимание на формат данных столбца.
Последний способ подходит в том случае, если значения находятся в одном столбце.
Макрос «Текст – число»
Преобразовать числа, сохраненные как текст, в числа можно с помощью макроса.
Есть набор значений, сохраненных в текстовом формате:
Чтобы вставить макрос, на вкладке «Разработчик» находим редактор Visual Basic. Открывается окно редактора. Для добавления кода нажимаем F7. Вставляем следующий код:
Sub Conv() With ActiveSheet.UsedRange arr = .Value .NumberFormat = "General" .Value = arr End With End Sub
Чтобы он «заработал», нужно сохранить. Но книга Excel должна быть сохранена в формате с поддержкой макросов.
Теперь возвращаемся на страницу с цифрами. Выделяем столбец с данными. Нажимаем кнопку «Макросы». В открывшемся окне – список доступных для данной книги макросов. Выбираем нужный. Жмем «Выполнить».
Цифры переместились вправо.
Следовательно, значения в ячейках «стали» числами.
Если в столбце встречаются аргументы с определенным числом десятичных знаков (например, 3,45), можно использовать другой макрос.
Sub Conv() With ActiveSheet.UsedRange .Replace ",","." arr = .Value .NumberFormat = "General" .Value = arr End With End Sub
Читайте так же: как перевести число и сумму прописью в Excel.
Скачать примеры преобразования текста в число.
Таким образом, возникающую при импорте или копировании числовых данных ошибку легко устранить. Преобразовать текст в число можно разными способами (с помощью макросов и без них). Сделать это просто и быстро. А впоследствии с числовыми аргументами производятся все необходимые операции.