将所有内容从列表框(可变行,常量列)复制到单击按钮时 table (VBA)

copy all contents from listbox (variable rows, constant columns) to to table at button click (VBA)

我有一个用户表单,用户可以在其中从各种其他表单控件(文本框、组合框等)填充列表框。每个数据条目将填充 8 列。这个想法是用户将输入数据条目(可能是同一类别条目中的子条目,因此需要能够查看整个批次的功能(或 类别)列表框中的条目),检查输入,如果检查出来,单击一个按钮以将数据提交到 table(这是数据处理模式的基础,吐出图表,等基于输入数据批次)。

所以我想编写以下程序: - 代码在主 table 中找到下一个空行,并复制列表框的全部内容以从此处交换 table 中的相应单元格。因此每次条目将是 8 列(A-H 列)和 X 行。

我尝试了从网上改编的多种不同代码,但总是出现错误或只能复制第一个条目。

这是我尝试的最后一个代码示例:

Private Sub cmdEnter_Click()

Dim LastRow As Range
Dim ProjectsTable As ListObject
Dim i As Long

Sheets("Project data").ListObjects("Projects").ListRows.Add

'Enter data from form into our new row
Set ProjectsTable = Sheets("Project data").ListObjects("Projects")
Set LastRow = ProjectsTable.ListRows(ProjectsTable.ListRows.Count).Range

With Sheets("Project data")
For i = 0 To ListBox1.ListCount - 1
    .Cells(LastRow, 1) = ListBox1.Column(i, 0)
    .Cells(LastRow, 2) = ListBox1.Column(i, 1)
    .Cells(LastRow, 3) = ListBox1.Column(i, 2)
    .Cells(LastRow, 4) = ListBox1.Column(i, 3)
    .Cells(LastRow, 5) = ListBox1.Column(i, 4)
    .Cells(LastRow, 6) = ListBox1.Column(i, 5)
    .Cells(LastRow, 7) = ListBox1.Column(i, 6)
    .Cells(LastRow, 8) = ListBox1.Column(i, 7)
Next i
End With

End Sub

谁能帮我找到解决方案?如果有任何指点,我将不胜感激。

解决方案:

Private Sub cmdEnter_Click()

Dim ProjectsTable As ListObject
Dim LastRow As Range

Sheets("Project data").ListObjects("Projects").ListRows.Add

'Enter data from form into our new row
Set ProjectsTable = Sheets("Project data").ListObjects("Projects")
Set LastRow = ProjectsTable.ListRows(ProjectsTable.ListRows.Count).Range

LastRow.Resize(ListBox1.ListCount, ListBox1.ColumnCount).Value = ListBox1.List

End Sub

归功于@Nathan_Sav。非常感谢!

像这样

Range("a1").Resize(Me.lstTabsAvailable.ListCount, Me.lstTabsAvailable.ColumnCount).Value = Me.lstTabsAvailable.List