Использования функции преобразования текста в число в макросах Excel.
Иногда при написании макросов необходимо производить вычисления или сравнения числовых значений, которые вносятся в поля «TextBox». Существует небольшая проблемка при работе с этими данными – информация из поля «TextBox» воспринимается программой как текстовая и, соответственно, в расчетах не может использоваться.
Для решения денной проблемы в VBA можно использовать функцию VAL(), которая переводит в численный формат данных. VAL — это функция конвертирующая текстовые значения аргумента в целые числовые или числовые значения с плавающей запятой. Следует отметить что функция Val при преобразовании десятичных дробей в число может распознать только точку, то есть, если вы напишете десятичную дробь через запятую, то функция распознает только первую (целую)часть дроби, остальной текст после запятой функция не воспримет. Например: VAL(«10,8»)= 10
Рассмотрим пример кода с данной функцией (VAL) и без нее:
Существует форма для внесения данных, в которой в два поля «TextBox1» и «TextBox1» вносятся числа, которые сравниваются нажатием кнопки «Сравнить»(CommandButton1) и суммируются нажатием кнопки «Сумма» (CommandButton2).
Если на нажатие кнопки сравнения «Сравнить»(CommandButton1) использовать код:
- Private Sub CommandButton1_Click()
- Dim i, b As String
- i = TextBox1.Value
- b = TextBox2.Value
- If i < b = True Then MsgBox («Второе число больше «)
- If i > b = True Then MsgBox («Первое число больше «)
- End Sub
А на нажатие кнопки суммы «Сумма» (CommandButton2) применить код:
- Private Sub CommandButton2_Click()
- Dim i, b, d As String
- i = UserForm1.TextBox1.Value
- b = UserForm1.TextBox2.Value
- d = i + b
- TextBox3.Value = d End Sub
Сравнение значений будет выполняться верно, но расчеты суммы будут неверными:
Применим функцию VAL () в этих кодах:
1-й код (Сравнение двух чисел)
- Private Sub CommandButton1_Click()
- Dim i, b As String
- i = Val(UserForm1.TextBox1.Value)
- b = Val(UserForm1.TextBox2.Value)
- If i < b = True Then MsgBox («Второе число больше «)
- If i > b = True Then MsgBox («Первое число больше «)
- End Sub
2-й код (Сумма двух чисел)
- Private Sub CommandButton2_Click()
- Dim i, b, d As String
- i = Val(UserForm1.TextBox1.Value)
- b = Val(UserForm1.TextBox2.Value)
- d = i + b
- TextBox3.Value = d End Sub
С таким кодом кнопки формы UserForm1 работают корректно, как показано на скриншоте далее.
Скачать файл с макросом суммы и сравнения двух чисел.