【问题标题】:Excel: How to open Data entry form using VBA, when there are 4 tables in the worksheetExcel:当工作表中有 4 个表时,如何使用 VBA 打开数据输入表单
【发布时间】:2015-07-20 08:53:04
【问题描述】:

我有一个 excel 工作表,其中有四个表格,每个区域(苏格兰、北部、伦敦、南部)一个表格。我需要创建一个允许用户填充这些表的数据输入表单。理想情况下,一旦按下按钮,表单就会出现在不同的工作表上。我想要四个不同的按钮,每个按钮都链接到四个表之一。这些表具有相同的列。

最好的方法是什么?我可以使用 Excel 的内置数据输入表格,方法是单击表格,然后按表格。然而,这几乎违背了表单的目的,因为这个想法是有一个用户端。

我看过创建自己的表单的教程,但我需要有关如何根据按下的按钮填充不同表格的信息。

提前致谢。

【问题讨论】:

    标签: excel forms vba


    【解决方案1】:

    好的,现在它的代码不同了,但您应该能够根据您的表单对其进行调整。

    Private Sub CommandButton1_Click()
    Dim Inp1 As String
    Dim Inp2 As String
    
    Inp1 = TextBox1.Text
    
    Inp2 = TextBox2.Text
    
    Range("B2").Select
    Do While ActiveCell.Value <> 0
    ActiveCell.Offset(1, 0).Select
    Loop
    ActiveCell.Value = Inp1
    
    Range("C2").Select
    Do While ActiveCell.Value <> 0
    ActiveCell.Offset(1, 0).Select
    Loop
    ActiveCell.Value = Inp2
    
    End Sub
    

    【讨论】:

    • 感谢您的回复。我遇到的问题是我有 4 个不同的表格需要填写在这 1 个工作表上。简单地找到第一个空行将不允许我填充每个表。有没有办法我可以做到这一点?这个想法是让它们成为 4 个按钮,每个表一个,并且根据单击的按钮,该表将被填充。
    • 我更改了代码,现在它应该符合您的期望。但它仅适用于 2 个文本框,因此您需要为其余的用户表单执行此操作。
    • 感谢您的时间和精力。我确信上面的解决方案是正确的,但它很难理解。经过几天的研究,我设法想出了一个解决方案。我将在下面发布它作为将来任何人的答案。
    【解决方案2】:

    提出问题后,我设法自己找到了解决方案。我将其包括在内,因为这似乎是一个没有在线良好答案的问题。该代码将用于本教程中显示的示例:

    https://www.youtube.com/watch?v=5oXcct1mOUw

    提交按钮的代码如下所示。这是 9 或 10 次退货的代码,但可以轻松调整

    Private Sub CommandButton1_Click()
    
    Dim ws As Worksheet
    Set ws = Worksheets("Current")
    
    'Add new row
    ws.ListObjects("Table1").ListRows.Add (1)
    
    'Populate new row
    ws.ListObjects("Table1").DataBodyRange(1, 1).Value = Me.name1.Value
    ws.ListObjects("Table1").DataBodyRange(1, 2).Value = Me.namecom.Value
    ws.ListObjects("Table1").DataBodyRange(1, 3).Value = Me.cin.Value
    ws.ListObjects("Table1").DataBodyRange(1, 4).Value = Me.hold.Value
    'DROPDOWN BOX
    ws.ListObjects("Table1").DataBodyRange(1, 5).Value = Me.fee.Value
    ws.ListObjects("Table1").DataBodyRange(1, 6).Value = Me.unam.Value
    ws.ListObjects("Table1").DataBodyRange(1, 7).Value = Me.capfin.Value
    ws.ListObjects("Table1").DataBodyRange(1, 8).Value = Me.month.Value
    ws.ListObjects("Table1").DataBodyRange(1, 9).Value = Me.comments.Value
    
    
    MsgBox "Data added", vbOKOnly + vbInformation, "Data Added"
    
    'clear the data
    
    Me.name1.Value = ""
    Me.namecom.Value = ""
    Me.cin.Value = ""
    Me.hold.Value = ""
    'DROPDOWN BOX
    Me.fee.Value = ""
    Me.unam.Value = ""
    Me.capfin.Value = ""
    Me.month.Value = ""
    Me.comments.Value = ""
    
    Me.name1.SetFocus
    

    `

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      相关资源
      最近更新 更多