2017-01-30 44 views
1

我正在使用以下代碼從用戶窗體(使用類似的問題集)傳輸數據,使用命令按鈕在每個項目需求的同一工作表中的15-25個獨立的小表中填充不同的單元格。使用相同的用戶表單填充多個表VBA Excel

由於我是VBA編碼新手,我的方法是爲每個表重複以下代碼以填充單元格,但尋找執行此操作的有效方法,因爲所有帶問題的用戶表單都相同,但是對於每個表格需要不同的響應。

例如:每張工作表都有15到25張表格,我們需要用相同的用戶表格填寫每個表格中的個人信息(例如姓名,年齡,性別,出生日期,學校,城市)問題集。

我需要知道是否有一種更好的方法來爲同一工作表中的所有表編寫一次代碼(因爲用戶表單和問題都是相同的),並使用特定於表的特定命令按鈕填充不同表中的數據。

我當前的代碼和做法是:

Private Sub SubmitButtonForm1_Click() 
wsWorkPlan.Select 
Range("B13").Select 
ActiveCell.End(xlDown).Select 
lastRow = ActiveCell.Row 
Cells(lastRow + 1, 6).Value = txtQ1.Text 
Cells(lastRow + 1, 7).Value = txtQ2.Text 
Cells(lastRow + 1, 2).Value = txtQ3.Text 
Cells(lastRow + 1, 8).Value = cmbQ4.Text 
Cells(lastRow + 1, 5).Value = cmbQ5.Text 
Cells(lastRow + 1, 4).Value = cmbQ6.Text 
End Sub 

Private Sub SubmitButtonForm2_Click() 
wsWorkPlan.Select 
Range("B55").Select 
ActiveCell.End(xlDown).Select 
lastRow = ActiveCell.Row 
Cells(lastRow + 1, 6).Value = txtQ1.Text 
Cells(lastRow + 1, 7).Value = txtQ2.Text 
Cells(lastRow + 1, 2).Value = txtQ3.Text 
Cells(lastRow + 1, 8).Value = cmbQ4.Text 
Cells(lastRow + 1, 5).Value = cmbQ5.Text 
Cells(lastRow + 1, 4).Value = cmbQ6.Text 
End Sub 

Private Sub SubmitButtonForm3_Click() 
wsWorkPlan.Select 
Range("B76").Select 
ActiveCell.End(xlDown).Select 
lastRow = ActiveCell.Row 
Cells(lastRow + 1, 6).Value = txtQ1.Text 
Cells(lastRow + 1, 7).Value = txtQ2.Text 
Cells(lastRow + 1, 2).Value = txtQ3.Text 
Cells(lastRow + 1, 8).Value = cmbQ4.Text 
Cells(lastRow + 1, 5).Value = cmbQ5.Text 
Cells(lastRow + 1, 4).Value = cmbQ6.Text 
End Sub 

提前非常感謝你的幫助!

回答

1

考慮後面的用戶窗體或你有每個按鈕調用需要傳遞的參數,如小區範圍標準模塊單獨的功能:

Private Sub SubmitButtonForm1_Click() 
    Call UpdateCells("B13") 
End Sub 

Private Sub SubmitButtonForm2_Click() 
    Call UpdateCells("B55") 
End Sub 

Private Sub SubmitButtonForm3_Click() 
    Call UpdateCells("B76") 
End Sub 

Public Function UpdateCells(strCell As String) 
    wsWorkPlan.Select 
    Range(strCell).Select 
    ActiveCell.End(xlDown).Select 
    lastRow = ActiveCell.Row 
    Cells(lastRow + 1, 6).Value = txtQ1.Text 
    Cells(lastRow + 1, 7).Value = txtQ2.Text 
    Cells(lastRow + 1, 2).Value = txtQ3.Text 
    Cells(lastRow + 1, 8).Value = cmbQ4.Text 
    Cells(lastRow + 1, 5).Value = cmbQ5.Text 
    Cells(lastRow + 1, 4).Value = cmbQ6.Text 
End Function 
+0

感謝芭菲的幫助! – ExcelMr

相關問題