使用VB

时间:2016-02-22 21:28:14

标签: excel vba excel-vba

我一直在寻找这个问题的答案,要么我找不到答案,要么我不理解我找到的答案。

我在Excel 2013中有一个工作簿。我正在使用VBA向工作簿添加一些下拉列表和表单,以便于填写。

我拥有的一个用户表单,有一些数据输入字段,当您点击"添加"它将信息添加到表格的最后一行。

以下是该用户表单的代码;

Private Sub Add_Click()

Dim the_sheet As Worksheet
Dim table_list_object As ListObject
Dim table_object_row As ListRow
Set the_sheet = Sheets("Structural")
Set table_list_object = the_sheet.ListObjects(1)
Set table_object_row = table_list_object.ListRows.Add

table_object_row.Range(1, 1).Value = "Deck"

last_row_with_data = the_sheet.Range("A" & Rows.Count).End(xlUp).Row

the_sheet.Range("B" & last_row_with_data) = TextBox3
the_sheet.Range("C" & last_row_with_data) = TextBox4
the_sheet.Range("D" & last_row_with_data) = ComboBox1

Unload Me
End Sub

这又完美无缺,完全符合我的需要。

我有另一个用户表单需要输入数据并让它将数据放在表格的一行中。但我无法弄清楚如何将数据添加到除最后一行之外的任何内容。

现在我有一个宏,当你点击" Add"按钮;

Sub AddRow6Sheet3()
    Application.ScreenUpdating = False
    Rows("7:7").Insert Shift:=xlDown
    Application.ScreenUpdating = True
End Sub

这非常适合在第7行添加行,这是我需要数据的地方。但我需要数据然后输入到创建的新行7。此表单将始终输入第7行。

但我还想知道如何将数据添加到任何行。因为在工作簿的后面我会遇到类似的问题。

1 个答案:

答案 0 :(得分:0)

斯科特,并没有完全回答我的问题。但是那里有大量有用的信息,这个链接上的一个东西确实给了我一个想法,最终成为我需要的东西。有效的代码如下 Private Sub Add_Click()

Call AddRow6Sheet3
ActiveSheet.ListObjects("Table13").ListRows.Add (7)
    With Sheets("Misc Metals")
    .Range("B7").Value = Me.ComboBox5.Value
    .Range("C7").Value = Me.ComboBox1.Value
    .Range("D7").Value = Me.ComboBox2.Value
    .Range("E7").Value = Me.ComboBox3.Value
    .Range("F7").Value = Me.ComboBox4.Value
    .Range("G7").Value = Me.ComboBox6.Value
End With
Unload MeEnd Sub

如果我需要Macro和ListRows.Add行,我还在玩。我知道如果没有宏,它就无法正常工作。它似乎覆盖了第7行中的内容。

由于