【问题标题】:VBA Several UserForms export to SheetVBA 几个用户窗体导出到工作表
【发布时间】:2018-08-21 17:23:16
【问题描述】:

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

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

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

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

我已经试过了:

Me.Controls("TextBox1")

我希望有人能告诉我如何编写我的宏将适用于我的工作簿中的每个用户窗体的代码。

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

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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    您可以将调用表单对象作为参数传递给子:

    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 了解如何访问表单控件

    【讨论】:

    • 精细解决方案 +)。 Diem 的旁注: 由于所有用户表单都是相同的(可能仅指不同的工作表),因此应考虑加载相同用户表单的多个 instances(实际上是一个类) .
    猜你喜欢
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    相关资源
    最近更新 更多