Использования функции преобразования текста в число в макросах Excel

Автор: | 01.06.2022

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

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

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

 

форма для заполнения в excel VBA

 

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

  1. Частная подпрограмма CommandButton1_Click
  2. Dim i, b как строка
  3. я = TextBox1.Значение
  4. б = TextBox2.Значение
  5. If i
  6. Если i > b = True Then MsgBox(«Первое число больше «)
  7. Под конец

А при нажатии кнопки суммы «Количество» (CommandButton2) применяем код:

   

  1. Частная подпрограмма CommandButton2_Click
  2. Dim i, b, d как строка
  3. я = ПользовательскаяФорма1.TextBox1.Значение
  4. б = ПользовательскаяФорма1.TextBox2.Значение
  5. д = я + б
  6. TextBox3.Value = d End Sub

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

 

сравнение чисел макрос VBA

 

Сумма чисел макроса VBA

 

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

 

 

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

  1. Частная подпрограмма CommandButton1_Click
  2. Dim i, b как строка
  3. я = Val(UserForm1.TextBox1.Value)
  4. б = Val(UserForm1.TextBox2.Value)
  5. If i
  6. Если i > b = True Then MsgBox(«Первое число больше «)
  7. Под конец

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

  1. Частная подпрограмма CommandButton2_Click
  2. Dim i, b, d как строка
  3. я = Val(UserForm1.TextBox1.Value)
  4. б = Val(UserForm1.TextBox2.Value)
  5. д = я + б
  6. TextBox3.Value = d End Sub

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

 

Правильная сумма в VBA

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *