VBA几个用户窗体导出到工作表

时间:2018-08-21 09:05:41

标签: excel vba excel-vba

在我的工作簿中,我有几个相同的用户窗体。只有名称不同。 例如WKA1 / WKA2 / WKS1 / WKS2 / PM1 / PM2等。

现在我想如果我单击用户窗体上的命令按钮,则文本框中的数据将保存在额外的工作表上。我想要一个单独的宏,以便我为CommandButton编写如下代码:

Private Sub CommandButton1_Click()
    Call Save_UF_Data
    [NameOfUF].Hide
End Sub

问题是,我不知道如何在宏“ Save_UF_Data”中编写它总是从打开的UF中获取文本框。

我已经尝试过:

Me.Controls("TextBox1")

我希望有人能告诉我如何编写宏才能对工作簿中的每个UserForm起作用的代码。

到目前为止,这是我的宏:

Public Sub Save_UF_Data()
     Dim lastrow As Long
     Dim a As Integer
     Dim ws As Worksheet

     Set ws = Worksheet("UserForm_Data")
     lastrow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
     a = 1

     Do
         ws.Range("A" & lastrow).Value = Me.Controls("Label" & a)    ' How do i have to change this part that it takes the value from the userform which is open?
         a = a + 1
         lastrow = lastrow + 1
     Loop Until a = 25
End Sub

1 个答案:

答案 0 :(得分:3)

您可以将调用形式的Object作为参数传递给Sub:

Private Sub CommandButton1_Click()
    Call Save_UF_Data(Me)
    [NameOfUF].Hide
End Sub

Sub看起来像:

Public Sub Save_UF_Data(frm As UserForm)
    Debug.Print frm.Controls("Textbox1")
    (...)
End Sub

请访问How to loop through all controls in a form, including controls in a subform - Access 2007,以了解如何访问表单控件