Excel VBA; UserForm, запуск одного фрагмента кода для разных значений TextBox

Добрый вечер, сообщество stackoverflow.

UPD:

Некоторая информация относительно моего реального дела. Вот UserForm, который я использую: UserForm

В моих Userforms текстовые поля Duration / CED называются Dur1-Dur6, а текстовые поля S / C Frequency называются sc1-sc6.

Основная цель макроса – скопировать шаблон таблицы и вставить его вместе с основной таблицей с необходимыми формулами, основанными на частоте S / C, как это. Таблица

Полный код у меня есть:

Private Sub OkButton_Click() TheStart: Dim FirstRow2 As Integer: FirstRow2 = 18 'set the number value of first row with formulas Dim LastRow2 As Integer: LastRow2 = Range("L1000").End(xlUp).Row Dim AQCol As Integer: AQCol = 11 'set the number value of AQ column in the Main Table (to calculate relative reference for formulas) If Supplier_Data.SuppName = "" Then MsgBox "Please enter supplier's name" Exit Sub End If Dim LastCol1 As Integer: LastCol1 = Range("IV18").End(xlToLeft).Column If Supplier_Data.Dur1 = "" Or Supplier_Data.sc1 = "" Then MsgBox "Please enter at least one duration and s/c frequency" Exit Sub 'copy TEST table ElseIf Supplier_Data.Dur1 = "TEST" Then Sheet5.Range("A7:C10").Copy Sheet6.Cells(15, LastCol1 + 1).PasteSpecial (xlPasteAll) Sheet6.Cells(15, LastCol1 + 1).Value = Supplier_Data.SuppName.Value & " " & Supplier_Data.Dur1.Value & " " & "offer" Sheet6.Cells(17, LastCol1 + 1).Value = Supplier_Data.sc1.Value Else Sheet5.Range("A2:C5").Copy Sheet6.Cells(15, LastCol1 + 1).PasteSpecial (xlPasteAll) Sheet6.Cells(15, LastCol1 + 1).Value = Supplier_Data.SuppName.Value & " " & Supplier_Data.Dur1.Value & " " & "offer" Sheet6.Cells(17, LastCol1 + 1).Value = Supplier_Data.sc1.Value End If 'Calculate AS for each line For i = FirstRow2 To LastRow2 - 1 If Supplier_Data.sc1.Value = "ppd" Then ASFormula = "= (r[0]c[-2] * 365/100) + (r[0]c[" & AQCol - (LastCol1 + 3) & "] * r[0]c[-1])/100" ElseIf Supplier_Data.sc1.Value = "PD" Then ASFormula = "= (r[0]c[-2] * 365) + (r[0]c[" & AQCol - (LastCol1 + 3) & "] * r[0]c[-1])/100" ElseIf Supplier_Data.sc1.Value = "PM" Then ASFormula = "= (r[0]c[-2] * 12) + (r[0]c[" & AQCol - (LastCol1 + 3) & "] * r[0]c[-1])/100" ElseIf Supplier_Data.sc1.Value = "PQ" Then ASFormula = "= (r[0]c[-2] * 4) + (r[0]c[" & AQCol - (LastCol1 + 3) & "] * r[0]c[-1])/100" End If Sheet6.Cells(i, LastCol1 + 3).FormulaR1C1 = ASFormula Sheet6.Range(Cells(FirstRow2, LastCol1 + 1), Cells(FirstRow2, LastCol1 + 3)).Copy Sheet6.Range(Cells(i, LastCol1 + 1), Cells(i, LastCol1 + 3)).PasteSpecial (xlPasteFormats) Next i 'Total Estimated AS Sheet6.Cells(LastRow2, LastCol1 + 3).FormulaR1C1 = "=SUM(r" & FirstRow2 & "c" & LastCol1 + 3 & ":r" & LastRow2 - 1 & "c" & LastCol1 + 3 & " )" Sheet6.Range(Cells(LastRow2, LastCol1 + 1), Cells(LastRow2, LastCol1 + 3)).Borders.LineStyle = xlContinuous Sheet6.Range(Cells(LastRow2, LastCol1 + 1), Cells(LastRow2, LastCol1 + 3)).Font.Bold = True Supplier_Data.Hide End Sub 

Итак, чтобы не иметь один и тот же фрагмент кода для всех Durations, я ищу способ запуска кода, начиная с Dim LastCol1 As Integer: LastCol1 = Range("IV18").End(xlToLeft).Column (so что Macro Generated Table 2 будет рядом с Macro Generated Table 1, а не перезаписывать ее), для каждого заполненного текстового поля Duration / CED.

Если бы кто-нибудь мог предложить решение, я бы очень признателен!

заранее спасибо

Как насчет этого?

 Private Sub UserForm_Initialize() Dim c As Control Dim cnt As Integer: cnt = 1 For Each c In userform1.Controls If TypeName(c) = "TextBox" Then Cells(cnt, 1).Value = c.Value * 2 * 3 cnt = cnt + 1 End If Next c End Sub 

EDIT: Похоже, вы полностью переписали вопрос и теперь хотите, чтобы какой-то код был написан для вас. Переполнение стека не является кодом FYI. Код, приведенный выше, находится внутри события userform_initialize, но вы должны уметь его исключить из события и выполнить его просто отлично (вам, возможно, придется модифицировать определенные части, чтобы соответствовать вашей ситуации, хотя, например, если вы хотите, чтобы значения перейти в другое место назначения); в основном, то, что он будет делать, – это петля через все элементы управления в пользовательской форме, и если элемент управления представляет собой текстовое поле, он поместит это значение в соответствующую ячейку (что и требовалось первоначально задать вашему вопросу).

  • Как изменить цвет фона текстового поля с помощью кнопки
  • Зацикливание через файлы Txt с использованием проблемы VBA - DIR ()
  • Очистка текстового поля при нажатии кнопки VBA
  • Копирование / управление форматированным текстом в текстовых блоках в Excel 2013 с использованием VBA
  • Стрелка в текстовом поле пользовательской формы, VBA
  • Неверное текстовое поле в форме VBA
  • Excel VBA - Shapes Текстовое поле OnChange событие
  • Передайте значение текстового поля UserForm в ячейку
  • Выделить текст в Userform TextBox
  • Добавить прослушиватель событий в текстовое поле Excel (потерять фокус)
  • Как перенести данные из TextBox в формулу в другом текстовом поле
  • Interesting Posts

    Добавьте определенные строки из файла xlsx в список, используя pandas

    excel vba type несоответствие – сравнение значений w / сочетание «правого», «смещенного», «len»,

    Макрос для разделения данных Excel на существующие вкладки

    Excel в PDF с использованием VBA (удаление пустых страниц)

    Экзамены Excel Interop не будут закрываться

    значения фильтра в столбце с петлей?

    Использование InputBox для ввода пользовательского ввода в виде текстовой строки в качестве переменной в формуле

    цикл IF на основе состояния автофильтра

    Заполните таблицу xlsx с помощью xlsx4j в Java

    обратитесь к нескольким внешним файлам CSV, возвращаемым #VALUE! Ошибка в функции vlookup Microsoft Excel

    Как запускать макрос ежедневно с помощью планировщика задач Windows

    Код с использованием .address не выполняет код, хотя он работает без ошибок

    Выполнить код при изменении ячейки. Не удалось просмотреть более одной ячейки

    Автоматический расчет формулы в excel

    Ошибка хоста Windows Script

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