Есть ли способ зациклить командную кнопку в пользовательской форме, основанную на вводе числа из текстового поля? - PullRequest
0 голосов
/ 24 апреля 2019

Как и в моем другом посте, пожалуйста, прости мне, что у меня нет знаний по этому предмету, я очень плохо знаком с кодированием.

У меня есть пользовательская форма с несколькими текстовыми полями, в которые пользователь может вводить данные. Как только эти данные вводятся в форму, пользователь нажимает командную кнопку, и код выводит данные в первую пустую строку, которую он находит. Эта часть кода работает очень хорошо.

Мой вопрос: как я могу зациклить командную кнопку, чтобы она щелкала себя «n» раз, где n = data_points_textbox.Value. Моя цель - сделать так, чтобы макрос мог генерировать большие объемы данных одним щелчком мыши.

Я пробовал подобные сообщения Сквозные кнопки VBA в пользовательской форме

и

https://social.msdn.microsoft.com/Forums/en-US/bcb8b8b4-4bcf-404d-9fdb-a9d5f31f6b19/loop-through-excel-userform-textcombo-box-and-write-to-worksheet?forum=isvvba

Несмотря на свою полезность, я не уверен, что эти посты вполне применимы к моей ситуации, и я не уверен, что честно понимаю, что они делают.

'Here is an excerpt of the code I am using, for various reasons I can't post all of it

Private Sub Data_Generator_Initialize()

'Empty Type_textbox
type_textbox.value = ""

End Sub 

Private Sub Generate_data_button_Click()

'Make sheet1 active
Sheet1.activate

'Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

'Transfer data to sheet1
Cells(emptyRow, 1).Value = type_textbox.Value 

End Sub 

'I have about 20 additional cells that are populated with data from various textboxes but I think this illustrates the point

1 Ответ

0 голосов
/ 24 апреля 2019

То, как я понимаю проблему:

  1. Кнопка на UF в настоящее время выводит значения из текстовых полей в одну строку
  2. Вы хотите, чтобы вывод х количество строк,на основе значения другого текстового поля

Этого можно достичь, зациклив код внутри макроса, связанного с командной кнопкой

Private Sub Generate_data_button_Click()
Dim arr(5) As String
Dim i As Long
Dim LRow As Long
Dim FEmptyRow As Long

'Using 6 textboxes as an example. Change to your configuration 
arr(0) = TextBox1.Value
arr(1) = TextBox2.Value
arr(2) = TextBox3.Value
arr(3) = TextBox4.Value
arr(4) = TextBox5.Value
arr(5) = TextBox6.Value

With Workbooks(REF).Sheets(REF)
    For i = 1 To data_points_textbox.Value
        LRow = .Cells(.Rows.Count, "A").End(xlUp).Row + 1 'determines the last filled row in column A
        FEmptyRow = .Cells(1, "A").End(xlDown).Row + 1 'determines the first empty row as seen from the top row (using this can cause filled rows below it to be overwritten!)

        .Range("A" & LRow & ":F" & LRow).Value = arr
        '.Range("A" & FEmptyRow & ":F" & FEmptyRow).Value = arr  'Alternative with the first empty row
    Next i
End With
End Sub
...