Добавить 10 записей из пользовательской формы в лист Excel Vba - PullRequest
0 голосов
/ 01 августа 2020

Я ищу способ сократить свой код VBA в Excel для ввода данных из формы из 10 записей в таблицу Excel.

Это моя пользовательская форма с 1 номером RMA (применяется ко всем 10 PN ), 1 имя клиента, 10 номеров деталей и 10 серийных номеров, которые go с каждым номером детали USERFORM10PARTNUMBERS

This is how I want my data transferred to the worksheet when I click "Enter"

ЛИСТОВЫЕ ДАННЫЕ

Текстовые поля номеров деталей называются TB #. Текстовые поля номеров SN называются SNTB #.

Это код того, что у меня есть для первой записи ... Я думал добавить код, чтобы сказать "TB" & "i" и "SNTB" & "i", но я не знаю, где разместить этот оператор или как его начать.

 Private Sub EnterButton_Click()
                
                 
                'this assigns receiving data to first columns of log Sheet
                
                
                
                If TB1.Value = "" Then
                
                
                Else
                
                            Worksheets("RM Tracker").Activate
                             Dim lastrow
                             
                             lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
                             lastrow = lastrow + 1
                            
                             Cells(lastrow, 1) = RMATB.Value
                             Cells(lastrow, 2) = CustCB.Value
                             Cells(lastrow, 3) = TB1.Value
                             Cells(lastrow, 4) = SNTB1.Value
                             Cells(lastrow, 5) = ReceiveTB.Value
                             
                             ActiveCell.Offset(1, 0).Select
                
                End If
                
                ActiveWorkbook.Save
                
                 
                Call resetform
                
                End Sub
                
                 
                
                
        Sub resetform()
                
                
                RMATB.Value = ""
                CustCB.Value = ""
                TB1.Value = ""
                SNTB1.Value = ""
                
                ReceiveTB = ""
                
                'sets focus on that first textbox again
                RecForm.RMATB.SetFocus
                
                
        End Sub
```
Thank you!

I appreciate any help on this. 

1 Ответ

1 голос
/ 01 августа 2020

Вы можете включить для l oop, где «i» представляет строку, с которой вы работаете. Когда вы добавляете данные, вам нужно поместить эту ссылку в l oop, чтобы новая строка была пересчитана.

 Private Sub EnterButton_Click()
                
                 
                'this assigns receiving data to first columns of log Sheet
                
                
                
                If TB1.Value = "" Then
                
                
                Else
                            
                            Worksheets("RM Tracker").Activate
                            dim i as long
                        For i = 1 To 10
                            
                             Dim lastrow as long ' should put a data type with dim statements
                             
                             lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
                             lastrow = lastrow + 1
                            
                             Cells(lastrow, 1) = Userform1.Controls("RMATB" & i).Value ' change userform name to fit your need
                             Cells(lastrow, 2) = Userform1.Controls("CustCB" & i).Value
                             Cells(lastrow, 3) = Userform1.Controls("TB1" & i).Value
                             Cells(lastrow, 4) = Userform1.Controls("SNTB1" & i).Value
                             Cells(lastrow, 5) = Userform1.Controls("ReceiveTB" & i).Value
                             
                       Next i
                 
                
                End If
                            
                ActiveWorkbook.Save
                
                 
                Call resetform
                
                End Sub
                
                 
                
                
        Sub resetform()
                
                
                RMATB.Value = ""
                CustCB.Value = ""
                TB1.Value = ""
                SNTB1.Value = ""
                
                ReceiveTB = ""
                
                'sets focus on that first textbox again
                RecForm.RMATB.SetFocus
...