在我的工作簿中,我有几个相同的用户窗体。只有名称不同。 例如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
答案 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,以了解如何访问表单控件