Добавление чисел с использованием форм Excel

Я создал форму Excel, которая имеет пять текстовых полей. Эти текстовые поля принимают любое числовое значение. После ввода пяти чисел имеется шестое текстовое поле, которое показывает сумму этих значений. Сумма этих значений всегда должна быть 100%. Вот мой код:

Private Sub TextBox1_Change() Dim Value As Single Value = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) + Val(TextBox4.Value) + Val(TextBox5.Value) TextBox6.Value = Value End Sub 

У меня одинаковый код для всех событий смены текстового поля. К сожалению, это не работает. Когда я ввожу 10 , 20 , 30 , 40 качестве своего ввода, вместо отображения 100% он показывает 10203040 в качестве результата.

Что я делаю не так?

Я считаю, что функция, которую вам нужно использовать, – это CDbl или CSng которая преобразуется в двойные или одиночные числа с плавающей запятой. Он не будет обрабатывать введенные пробелы или нечисловые данные, поэтому вам может потребоваться сначала проверить неверные данные. Что-то вроде этого должно работать:

 Value = 0 If IsNumeric(TextBox1.Value) Then Value = Value + CSng(TextBox1.Value) If IsNumeric(TextBox2.Value) Then Value = Value + CSng(TextBox2.Value) If IsNumeric(TextBox3.Value) Then Value = Value + CSng(TextBox3.Value) If IsNumeric(TextBox4.Value) Then Value = Value + CSng(TextBox4.Value) If IsNumeric(TextBox5.Value) Then Value = Value + CSng(TextBox5.Value) TextBox6.Value = Value 
  • Excel VBA; UserForm, запуск одного фрагмента кода для разных значений TextBox
  • Как активировать входной режим с VBA на текстовом поле неактивного x, вставленного в рабочий лист?
  • Как выбрать данные в TextBox или ListBox, а затем отправить электронную почту через Outlook на основе этих данных
  • Excel VBA Append для TextBox медленный
  • Код VBA / Macro для получения значения текстового поля
  • Ограничение текстовой строки VBA в текстовом поле
  • Добавить прослушиватель событий в текстовое поле Excel (потерять фокус)
  • Как получить доступ к текстовому блоку, размещенному на листе в модуле VBA?
  • VBA, чтобы проверить, существует ли текст в текстовом поле, а затем проверить, находится ли дата в правильном формате
  • Текстовое поле VBA на числовое значение
  • Управление данными из текстового поля и значений инвертированного дня / месяца
  • Давайте будем гением компьютера.