Добавление чисел с использованием форм 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
в качестве результата.
Что я делаю не так?
- Не удалось извлечь содержимое текстового поля Powerpoint в Excel с помощью Excel VBA
- XlsxWriter Python вставляет текстовое поле в диаграмму
- Стрелка в текстовом поле пользовательской формы, VBA
- Диалоговое окно WPF modess из надстройки MS Excel
- сохранение данных в текстовом поле для Excel в vb.net
- Ярлык, связанный с значением текстового поля
- Автоматическое заполнение текстового поля в Excel VBA
- Excel - изменение BackColor текстовых полей UserForm и ComboBoxes с помощью VBA
- Блокировка TextBox от перемещения и изменения размера листа и только редактирование текста Excel VBA
- Возьмите текстовое поле и перейдите в определенную ячейку.
- VBA выводит значение ComboBox в следующую свободную ячейку в столбце
- Текст текстового поля исчезает при вводе текста Excel VBA - часть 2
- Ячейка, связанная с текстовым полем ActiveX, возвращающая текст вместо номера
Я считаю, что функция, которую вам нужно использовать, – это 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