Как я могу суммировать значение в 8 текстовых файлах с одним текстовым полем?

Я не могу найти способ сделать это. Я думаю, что это очень простой вопрос, но я просто знаком с excel VBA и не могу найти правильную формулу.

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

Я пробовал этот код.

 Private Sub txtTotal_Change() txtTotal.Value = CInt(txtKas) + CInt(txtInvestasi) + CInt(txtDanaTerbatas) + CInt(txtBruto) + ... End Sub 

Как я могу суммировать это несколько текстовых полей (8 текстовых полей) в одно текстовое поле?

Вам нужно добавить изменения в текстовые поля, которые можно изменить пользователем.

Допустим, что у меня ниже UserForm и TextBox1 в TextBox3 :
UserForm1
TextBox3 будет суммой TextBox1 и TextBox2.

Щелкните правой кнопкой мыши UserForm1 в Project и выберите View Code , затем введите TextBoxesSum Sub (я использую Double type для принятия десятичных знаков):

 Private Sub TextBoxesSum() Dim Total As Double Total = 0 If Len(TextBox1.Value) > 0 Then Total = Total + CDbl(TextBox1.Value) If Len(TextBox2.Value) > 0 Then Total = Total + CDbl(TextBox2.Value) ' Add more for the rest of your text boxes TextBox3.Value = Total End Sub 

Чтобы быть безопасным и умным, вы также должны ввести проверку ключа с пользовательского ввода. Из-за того, что у вас есть текстовые поля, лучше иметь функцию для ее обработки:

 Private Function NumericOnly(ByVal KeyAscii As MSForms.ReturnInteger) As MSForms.ReturnInteger Dim Key As MSForms.ReturnInteger Select Case KeyAscii Case 46, 48 To 57 ' Accept only decimal "." and numbers [0-9] Set Key = KeyAscii Case Else KeyAscii = 0 ' Minor bug earlier Set Key = KeyAscii End Select Set NumericOnly = Key End Function 

Теперь вернемся к объекту UserForm1, щелкните правой кнопкой мыши TextBox1 и View Code , введите:

 Private Sub TextBox1_Change() TextBoxesSum End Sub 

Также проверяйте событие KeyPress:

 Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) KeyAscii = NumericOnly(KeyAscii) End Sub 

Теперь скопируйте выше 2 набора TextBox Sub и вставьте ниже, затем замените строку перед подчеркиванием, чтобы она соответствовала имени текстовых полей, которые у вас есть.

Пример вывода:
Образец

Вы (возможно) не хотите суммировать значения из ваших текстовых полей, когда кто-то пытается изменить значение в поле итогов – вы хотите суммировать их, когда значение в любом из восьми других полей изменяется.

Самый простой способ сделать это – это, вероятно, создать простой макрос для суммирования значений текстовых полей, а затем вызвать это из событий изменения 8, которые пользователь может изменить.

Макрос суммирует текстовые поля и помещает их в поле итогов

 Private Sub sum_boxes() txtTotal = CLng(txtKas.Value) + CLng(Investasi.Value) + CLng(DanaTerbatas.Value) End Sub 

Какое событие изменения будет выглядеть

 Private Sub txtKas_Change() Call sum_boxes End Sub 

Как уже упоминалось ранее, вам нужно сделать одно событие change для каждого из восьми ящиков.

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

  • Выделить текст в Userform TextBox
  • Как активировать входной режим с VBA на текстовом поле неактивного x, вставленного в рабочий лист?
  • Очистка текстового поля при нажатии кнопки VBA
  • Не удалось извлечь содержимое текстового поля Powerpoint в Excel с помощью Excel VBA
  • Как установить имя текстового поля как переменную и разрешить изменять имя в цикле?
  • Добавление чисел с использованием форм Excel
  • Получить значения для текстового поля из ячейки Excel в C #
  • Копирование / управление форматированным текстом в текстовых блоках в Excel 2013 с использованием VBA
  • Значение по умолчанию для текстового поля VBA Userform и выделено
  • Размер текста Excel / PowerPoint после сжатия
  • Вставить из excel в текстовое поле
  • Interesting Posts

    Как hlookup от одного листа к другому и повторять для нескольких строк

    Можете ли вы создавать дополнения Excel с помощью FCell?

    Скопировать цену акций с помощью VBA-Web в Excel

    Ruby – запись данных в существующий .xlsx документ

    Вставить столбец с помощью openpyxl

    Регулярное выражение для Notepad ++

    MATCH и ссылка на несколько ячеек в условном форматировании Excel

    Формула Excel – Добавить ячейку + ".jpg" на основе значения в B1 и C1 пуста

    Автоматическая загрузка файла изображения в бесплатный онлайн-ресурс OCR

    Можете ли вы определить имя для UDF, а затем указать параметры вне определения?

    Добавление диаграмм с использованием двух выпадающих меню и значения которых находятся на другом листе

    Как я могу получить в VBA несколько значений поля списка на листе Excel?

    активировать рабочий лист по индексу

    чтение листа Excel (93-97) с более чем 65536 строк с использованием cfspreadsheet

    Как избежать локализации имен объектов Excel и разбиения макросов?

    Давайте будем гением компьютера.