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

Функция VAL в VBA Excel или как преобразовать TextBox в число (цифру).

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

Для решения денной проблемы в VBA можно использовать функцию VAL(), которая переводит в численный формат данных. VAL — это функция конвертирующая текстовые значения аргумента в целые числовые или числовые значения с плавающей запятой. Следует отметить что функция Val при преобразовании десятичных дробей в число может распознать только точку, то есть, если вы напишете десятичную дробь через запятую, то функция распознает только первую (целую)часть дроби, остальной текст после запятой функция не воспримет. Например: VAL(«10,8»)= 10

Рассмотрим пример кода с данной функцией (VAL) и без нее:

Существует форма для внесения данных, в которой в два поля «TextBox1» и «TextBox1» вносятся числа, которые сравниваются нажатием кнопки «Сравнить»(CommandButton1) и суммируются нажатием кнопки «Сумма» (CommandButton2).

Если на нажатие кнопки сравнения «Сравнить»(CommandButton1) использовать код:

  1. Private Sub CommandButton1_Click()
  2. Dim i, b As String
  3. i = TextBox1.Value
  4. b = TextBox2.Value
  5. If i b = True Then MsgBox («Первое число больше «)
  6. End Sub

А на нажатие кнопки суммы «Сумма» (CommandButton2) применить код:

  1. Private Sub CommandButton2_Click()
  2. Dim i, b, d As String
  3. i = UserForm1.TextBox1.Value
  4. b = UserForm1.TextBox2.Value
  5. d = i + b
  6. TextBox3.Value = d End Sub

Сравнение значений будет выполняться верно, но расчеты суммы будут неверными:

Применим функцию VAL () в этих кодах:

1-й код (Сравнение двух чисел)

  1. Private Sub CommandButton1_Click()
  2. Dim i, b As String
  3. i = Val(UserForm1.TextBox1.Value)
  4. b = Val(UserForm1.TextBox2.Value)
  5. If i b = True Then MsgBox («Первое число больше «)
  6. End Sub

2-й код (Сумма двух чисел)

  1. Private Sub CommandButton2_Click()
  2. Dim i, b, d As String
  3. i = Val(UserForm1.TextBox1.Value)
  4. b = Val(UserForm1.TextBox2.Value)
  5. d = i + b
  6. TextBox3.Value = d End Sub

С таким кодом кнопки формы UserForm1 работают корректно, как показано на скриншоте далее.

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

Примечание: Мы стараемся как можно оперативнее обеспечивать вас актуальными справочными материалами на вашем языке. Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Просим вас уделить пару секунд и сообщить, помогла ли она вам, с помощью кнопок внизу страницы. Для удобства также приводим ссылку на оригинал (на английском языке).

Нет функции по умолчанию, отображающий чисел в виде английских слов на листе Excel, но вы можете добавить эту возможность путем вставки следующий код функции SpellNumber в модуле VBA (Visual Basic for Applications). Эта функция позволяет преобразовывать доллара и кратное сумм для слов с помощью формулы, 22,50 читается как двадцати двух центы и т. Это может быть очень полезным при использовании Excel как шаблон для печати проверки.

Если вы хотите преобразования числовых значений в текстовом формате без отображения их как слова, используйте функции текст .

Примечание: Microsoft примеры программирования только для иллюстрации и без гарантий выраженное или подразумевается. Включает в себя, но не ограничивается гарантий окупаемость или Фитнес для определенной цели. В этой статье предполагается, что вы знакомы с языком VBA программирования и с помощью средств, которые используются для создания и отладки процедур. Сотрудники службы поддержки Майкрософт могут пояснить конкретной процедуры. Однако они не изменять эти примеры для обеспечения функциональных возможностей или создания процедур в соответствии с конкретными требованиями.

Создание функции SpellNumber для преобразования чисел в слова

Используйте сочетание клавиш Alt + F11 , чтобы открыть редактор Visual Basic (VBE).

Примечание: Вы также можете открывать редактор Visual Basic, добавив вкладку «Разработчик» на ленту.

На вкладке Insert (Вставка) нажмите кнопку Module (Модуль).

Читать еще:  В excel число сохранить как текст

Скопируйте приведенный ниже код.

Примечание: Известные как Пользовательской функции (UDF)этот код Автоматизация задач для преобразования чисел в разных частях листа.

Вставьте строки кода в поле Module1 (Code) (Модуль 1 — код).

Нажмите клавиши Alt + Q , чтобы вернуться в Microsoft Excel. Функция SpellNumber теперь готов к использованию.

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

Использование функции SpellNumber в отдельных ячейках

Введите формулу = SpellNumber (A1) в ячейку, которую вы хотите отобразить письменного номер, где A1 — ячейку, содержащую число вы хотите преобразовать. Можно также вручную ввести значение как = SpellNumber(22.50).

Нажмите клавишу Ввод, чтобы подтвердить формулу.

Сохранение книги с функцией SpellNumber

Excel не может сохранить книгу с помощью функции макросов в формате стандартной книги без поддержки макросов (XLSX). Если щелкнуть файл > Сохранить. Откроется диалоговое окно проекта VB. Нажмите кнопку Нет.

Можно сохранить файл в формате Книга Excel с поддержкой макросов (xlsm), чтобы сохранить файл в текущем формате.

На вкладке Файл выберите команду Сохранить как.

Щелкните раскрывающееся меню Тип файла и выберите Книгу Excel с поддержкой макросов.

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

Самая актуальная документация по Visual Studio 2017: Документация по Visual Studio 2017.

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

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

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

1 Дробные части могут быть подчиняться специальному типу округления под названием банковское округление. См. примечания для дополнительных сведений.

Как правило предпочтительнее использовать функции преобразования типа Visual Basic, чем методы .NET Framework, например ToString() в классе Convert или в отдельном типе структуры или класса. Функции языка Visual Basic предназначены для оптимального взаимодействия с Visual Basic, и они также сделают исходный код короче и облегчат его чтение. Кроме того методы преобразования .NET Framework не всегда получают тот же результат, что функции Visual Basic, например при преобразовании Boolean к Integer . Дополнительные сведения см. в разделе Устранение неполадок, связанных с типами данных.

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

Сбой преобразования. Если параметр expression , передаваемый в функцию, находится вне диапазона значений типа данных, в который преобразуется 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 распознает литералы даты и литералы времени, но не числовые значения. Чтобы преобразовать значение Date Visual Basic 6.0 к Date Visual Basic 2005 или более поздних версий, можно использовать метод DateTime.FromOADate.

Читать еще:  Excel как перенести на новую строку в ячейке

Нейтральные значения даты/времени. Тип данных Date всегда содержит и дату, и время. При преобразовании типов в Visual Basic нейтральным значением даты считается 1/1/1 (1 января 1 года), а нейтральным значением времени — 00:00:00 (полночь). Если значение с типом Date преобразуется в строку, функция CStr не включает нейтральные значения в конечную строку. Например, при преобразовании значения #January 1, 0001 9:30:00# в строку, будет возвращен результат «9:30:00»; дата отбрасывается. При этом сведения о дате останутся в исходном значении Date и могут быть извлечены с помощью таких функций, как DatePart.

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

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

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

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

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

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

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

Входным аргументом CChar должен быть тип данных Char или String . Невозможно использовать функцию CChar для преобразования числа в символ, поскольку функция CChar не может принимать данные числовых типов. В этом примере получается число, представляющее кодовую позицию (код символа), которое преобразуется в соответствующий символ. Использует функцию InputBox для получения строки цифр, CInt для преобразования строки к типу Integer , а ChrW для преобразования строки к типу Char .

В следующем примере для преобразования строк к Date используется функция CDate . Как правило, не рекомендуется жестко кодировать дату и время в виде строк (как показано в этом примере). Вместо этого используйте литералы даты и времени, например #Feb 12, 1969# и #4:45:23 PM#.

3.9.2 Функции преобразования и проверки типов данных

Встроенные функции преобразования и проверки типов данных VBA, функции CBool(), CByte(), CCur(), CDate(), CDbl(), CDec(), CInt(), CLng(), CSng(), CStr(), CVar(), CVDate(), CVErr(), Str(), Val(), IsNumeric(), IsDate(), IsEmpty(), IsError(), IsMissing(), IsNull(), IsObject(), IsArray(), Hex(), Oct()

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

  • преобразование из строкового значение в числовое при приеме значения от пользователя через InputBox();
  • преобразование значения даты/времени в строковое, когда нам нужно отобразить дату или время единообразно вне зависимости от региональных настроек на компьютерах пользователей;
  • преобразование значения из строкового в дату/время для применения специальных функций даты/времени.
Читать еще:  Excel в формуле текст

Чаще всего для конвертации типов данных используются функции, имя которых выглядит как C (от слова Convert) + имя типа данных. Вот перечень этих функций: CBool(), CByte(), CCur(), CDate(), CDbl(), CDec(), CInt(), CLng(), CSng(), CStr(), CVar(), CVDate(), CVErr(). Просмотреть, что в итоге получилось, можно при помощи функции TypeName(), например:

nVar1 = CInt(InputBox(«Введите значение»))

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

  • Str() — позволяет перевести числовое значение в строковое. Делает почти то же самое, что и CStr(), но при этом вставляет пробел впереди для положительных чисел.
  • Val() — «вытаскивает» из смеси цифр и букв только числовое значение. При этом эта функция читает данные слева направо и останавливается на первом нечисловом значении (допускается единственное нечисловое значение — точка, которая будет отделять целую часть от дробной). Очень удобно, когда у нас вперемежку с числовыми данными прописываются единицы измерения или валюта.

Чтобы не возникло ошибок при конвертации, можно вначале проверять значения на возможность конвертации при помощи функций IsNumeric() и IsDate(). Для проверки на соответствие специальным значениям можно использовать функции IsArray(), IsEmpty(), IsError(), IsMissing(), IsNull() и IsObject(). Все эти функции возвращают True или False в зависимости от результатов проверки переданного им значения.

Для того, чтобы преобразовать десятичные данные в строковое представление шестнадцатеричных и восьмеричных значений, используются функции Hex() и Oct(). Для обратного преобразования специальных функций не предусмотрено, но вы можете указать компилятору VBA, что эти числа записаны в шестнадцатеричном или восьмеричном формате, записав их, например, как &O12 и &HA.

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

7856 просмотра

6 ответа

186 Репутация автора

У меня есть столбцы с экспортированными номерами, которые хранятся в виде текста.

Я пытался преобразовать эти данные в числа с этим кодом.

Он сделал работу правильно (или, кажется, так), но я все еще не могу работать с этими данными, как с числами, но Excel говорит мне, что они хранятся как числа.

Но когда я проверяю это по формуле =ISTEXT() , это всегда показывает мне ИСТИНА

Не могли бы вы помочь мне с этим, пожалуйста? Все учебники и советы, которые я нашел в Google, были через Formating ячейки или =VALUE() , но функция VALUE у меня не работает, она показывает #VALUE .

плюса

9 Репутация автора

Преобразование чисел, хранящихся в виде текста, в числа с помощью макроса

Автор: Rick Размещён: 29.06.2017 01:53

плюса

78340 Репутация автора

Подсветите числа, которые вы хотите «исправить» и запустить:

1 плюс

803 Репутация автора

Решение, не эквивалентное vba, состоит в том, чтобы ввести в ячейку «1», скопировать эту ячейку, выбрать диапазон, который вы хотите преобразовать в числа, щелкнуть правой кнопкой мыши и нажать «Специальная вставка» -> «Умножить».

Это оставит все значения в этом диапазоне в виде чисел без изменения формата. Протестировано с ISTEXT.

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

Автор: Busse Размещён: 29.06.2017 01:59

1 плюс

50901 Репутация автора

Убедитесь, что весь соответствующий регион сначала установлен в числовой формат.

Выделите соответствующий регион и сделайте глобальную замену на пустые места («пробел», чтобы «оставить пустым»). Затем, в зависимости от вашей локали, попробуйте глобальную замену , на . .

Затем введите 1 в запасную ячейку, скопируйте эту ячейку, выберите весь соответствующий регион и вставьте Special, Option, Multiply.

Если это не работает, . вернитесь к , и повторите Paste Special.

Автор: pnuts Размещён: 29.06.2017 01:59

1 плюс

6536 Репутация автора

Это запятая, должно быть . так 405,90 = 405.90

Похожие статьи

Ссылка на основную публикацию
Похожие публикации
Adblock
detector