Как в vba excel преобразовать строку в число

Обновлено: 07.07.2024

Для преобразования типов данных предназначены следующие функции:

  • CBool(<Значение>) — преобразует число или строку в логический тип данных. Если преобразование невозможно возбуждается исключение. Пример:
  • CByte(<Значение>) — преобразует значение в число типа Byte . Если преобразование невозможно возбуждается исключение. Пример:
  • CInt(<Значение>) — преобразует значение в число типа Integer . Если преобразование невозможно возбуждается исключение. Пример:
  • CLng(<Значение>) — преобразует значение в число типа Long . Если преобразование невозможно возбуждается исключение. Пример:
  • CSng(<Значение>) — преобразует значение в число типа Single . Если преобразование невозможно возбуждается исключение. Пример:
  • CDbl(<Значение>) — преобразует значение в число типа Double . Если преобразование невозможно возбуждается исключение. Пример:
  • CCur(<Значение>) — преобразует значение в число типа Currency . Если преобразование невозможно возбуждается исключение. Пример:
  • CDec(<Значение>) — преобразует значение в число типа Decimal . Если преобразование невозможно возбуждается исключение. Пример:
  • CVar(<Значение>) — преобразует значение в тип Variant . Пример:
  • CStr(<Значение>) — преобразует значение в строку. Пример:
  • str(<Число>) — преобразует число в строку. Первый символ в строке резервируется под знак числа. Если число является положительным, то первый символ будет пробелом, а если отрицательным — то первым символом будет знак минус. Обратите также внимание на то, что при выводе десятичный разделитель отображается в виде точки, а не в виде запятой, как это было при использовании функции CStr() . Пример:
  • CDate(<Значение>) — преобразует значение в тип Date . Если преобразование невозможно возбуждается исключение. Пример:

В качестве примера рассмотрим возможность сложения двух чисел, введенных пользователем. Как вы уже знаете, вводить данные позволяет функция InputBox() . Воспользуемся этой функцией для получения чисел от пользователя (листинг 2.4).

Листинг 2.4. Получение данных от пользователя

  • IsObject(<Переменная>) — возвращает значение True , если переменная является объектной, и False — в противном случае:
  • IsEmpty(<Переменная>) — возвращает значение True , если переменной не было присвоено значение, и False — в противном случае:
  • IsNull(<Переменная>) — возвращает значение True , если переменная содержит значение Null , и False — в противном случае:
  • IsDate(<Значение>) — возвращает значение True , если значение может быть преобразовано в тип Date , и False — в противном случае:

Переделаем предыдущий пример (листинг 2.5) и используем функцию IsNumeric() для проверки возможности преобразования введенного пользователем значения в число (листинг 2.6). Код оформим в виде процедуры с названием Сумма() .

Листинг 2.6. Использование функции IsNumeric()


Статьи по Visual Basic for Applications (VBA)

Помощь сайту

Yandex-деньги: 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

Можно преобразовать числовое значение типа, Boolean или значения даты и времени в String . Можно также преобразовать в обратном направлении — от строкового значения к числовому, Boolean или Date — при условии, что содержимое строки может интерпретироваться как допустимое значение целевого типа данных. Если они не могут, возникает ошибка времени выполнения.

Преобразования для всех этих назначений в любом направлении представляют собой сужающие преобразования. Следует использовать ключевые слова преобразования типов (. CBool CByte . CDate CDbl CDec CInt CLng CSByte CShort CSng CStr CUInt , CULng , CUShort и CType ). FormatФункции и Val предоставляют дополнительный контроль над преобразованиями между строками и числами.

Если вы определили класс или структуру, можно определить операторы преобразования типов между String и типом класса или структуры. Дополнительные сведения см. в разделе How to: Define a Conversion Operator.

Преобразование чисел в строки

Функцию можно использовать Format для преобразования числа в отформатированную строку, которая может включать не только соответствующие цифры, но и символы форматирования, такие как знак валюты (например $ ,), разделители тысяч или символы группирования цифр (например,), , и десятичный разделитель (например,) . . Format автоматически использует соответствующие символы в соответствии с региональными параметрами, заданными на панели управления Windows.

Обратите внимание, что оператор конкатенации ( & ) может преобразовать число в строку неявным образом, как показано в следующем примере.

Преобразование строк в числа

Функцию можно использовать Val для явного преобразования цифр из строки в число. Val считывает строку, пока не встретится символ, отличный от цифры, пробела, табуляции, перевода строки или точки. Последовательности "&O" и "&H" изменяют основание системы счисления и завершают сканирование. До тех пор пока не будет остановлено чтение, Val преобразует все соответствующие символы в числовое значение. Например, следующая инструкция возвращает значение 141.825 .

когда Visual Basic преобразует строку в числовое значение, она использует региональные параметры , заданные на панели управления Windows, для интерпретации разделителя групп разрядов, десятичного разделителя и символа валюты. Это означает, что преобразование может быть выполнено в одном параметре, но не в другом. Например, "$14.20" допустим в английской (США) национальной настройке, но не на французском языке.

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

Синтаксис

Часть

expression
Обязательный элемент. Любое выражение исходного типа данных.

Тип данных возвращаемого значения

Имя функции определяет тип данных возвращаемого значения, как показано в следующей таблице.

1 дробная часть может подвергаться специальному типу округления, называемому банковским округлением. Дополнительные сведения см. в разделе "Примечания".

Комментарии

начиная с Visual Basic 15,8, производительность преобразования с плавающей запятой в целое число оптимизируется при передаче Single значения или, Double возвращаемого следующими методами, в одну из целочисленных функций преобразования (. CByte CShort CInt CLng CSByte CUShort CUInt , CULng ):

Такая оптимизация позволяет выполнять код, выполняющий большое количество целочисленных преобразований, в два раза быстрее. В следующем примере демонстрируются эти оптимизированные преобразования с плавающей запятой в целые числа:

Поведение

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

Неудачные преобразования. Если expression переданный функции объект находится вне диапазона типа данных, в который она должна быть преобразована, OverflowException возникает исключение.

Дробные части. При преобразовании нецелочисленного значения в целочисленные функции целочисленного преобразования ( CByte , CInt . CLng , CSByte CShort CUInt , CULng и CUShort ) удаляют дробную часть и округляют значение до ближайшего целого.

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

CInt и CLng отличаются от Int функций и Fix , которые усекаются, а не округляют дробную часть числа. Кроме того, Fix и Int всегда возвращают значение того же типа данных, что и при передаче.

Преобразования даты и времени. Используйте IsDate функцию, чтобы определить, можно ли преобразовать значение в дату и время. CDate распознает литералы даты и литералы времени, но не числовые значения. чтобы преобразовать значение Visual Basic 6,0 в Date Date значение в Visual Basic 2005 или более поздней версии, можно использовать DateTime.FromOADate метод.

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

если необходимо преобразовать в строковое представление значения или из него в формате, отличном от указанного в вашем языковом стандарте, то нельзя использовать функции преобразования типа Visual Basic. Для этого используйте ToString(IFormatProvider) Parse(String, IFormatProvider) методы и типа этого значения. Например, используйте Double.Parse при преобразовании строки в Double и используйте Double.ToString при преобразовании значения типа Double в строку.

CType Function

Функция CType принимает второй аргумент, typename и expression typename typename применяет к, где может быть любым типом данных, структурой, классом или интерфейсом, к которому существует допустимое преобразование.

Сравнение CType с другими ключевыми словами преобразования типов см. в разделе Оператор DirectCast и Оператор TryCast.

Пример CBool

В следующем примере функция используется CBool для преобразования выражений в Boolean значения. Если результат выражения равен ненулевому значению, CBool True функция возвращает; в противном случае возвращается значение False .

Пример CByte

В следующем примере функция используется CByte для преобразования выражения в Byte .

Пример CChar

В следующем примере функция используется CChar для преобразования первого символа String выражения в Char тип.

Пример для CDate

Пример с CDbl

Пример CDec

В следующем примере функция используется CDec для преобразования числового значения в Decimal .

Пример функции CInt

В следующем примере функция используется CInt для преобразования значения в Integer .

Пример с CLng

В следующем примере функция используется CLng для преобразования значений в Long .

Пример CObj

В следующем примере функция используется CObj для преобразования числового значения в Object . Object Сама переменная содержит только 4-байтовый указатель, указывающий на Double присвоенное ему значение.

Пример Ксбите

В следующем примере функция используется CSByte для преобразования числового значения в SByte .

Пример CShort

В следующем примере функция используется CShort для преобразования числового значения в Short .

Пример CSng

В следующем примере функция используется CSng для преобразования значений в Single .

Пример функции CStr

В следующем примере функция используется CStr для преобразования числового значения в String .

В следующем примере функция используется CStr для преобразования Date значений в String значения.

CStr всегда отображает Date значение в стандартном коротком формате для текущего языкового стандарта, например "6/15/2003 4:35:47 PM". Однако CStr подавляет нейтральные значения 1/1/0001 для даты и 00:00:00 для времени.

Дополнительные сведения о значениях, возвращаемых CStr , см. в разделе возвращаемые значения функции CStr.

Пример Куинт

В следующем примере функция используется CUInt для преобразования числового значения в UInteger .

Пример Кулнг

В следующем примере функция используется CULng для преобразования числового значения в ULong .

Пример Кушорт

В следующем примере функция используется CUShort для преобразования числового значения в UShort .

Каждая функция приводит выражение к нужному типу данных.

Синтаксис

Обязательный аргумент выражение — это любое строковое или числовое выражение.

Возвращаемые типы

Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:

Функция Тип возвращаемых данных Диапазон выражения-аргумента
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

Пример функции 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 и обратная связь.

Читайте также: