VBA错误13types不匹配

我正在尝试在工作表中将一行单元格添加到用户窗体中的多列列表框中。 工作表中的列数也各不相同。 我不断收到错误“types不匹配”。 通过我的代码,我发现它发生在第一个.AddItem行。 我发现你不能用.AddItem添加多个项目。 还有另一种方法来做到这一点? 我很新vba。 谢谢你的帮助!

Private Sub GenerateButton_Click() Dim i As Long, counter As Long, counter_RA As Long, x As Integer Dim LastColRA As Long, LastColCP As Long LastColRA = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column LastColCP = Sheet2.Cells(1, Columns.Count).End(xlToLeft).Column 'Check to make sure that enough items were selected For x = 0 To ListBox2.ListCount - 1 If ListBox2.Selected(x) Then counter_RA = counter_RA + 1 With TabData.DataTable .AddItem Sheets(Sheet1).Range(Cells(x + 2, 1), Cells(x + 2, LastColRA)).Text End With End If Next x For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then counter = counter + 1 With TabData.DataTable .AddItem Sheets(Sheet2).Range(Cells(i + 2, 1), Cells(i + 2, LastColCP)).Text End With End If Next i End Sub 

那里有几个问题。 首先,如果使用多个单元格区域的Text属性,则将返回Null除非所有单元格包含相同的文本。 其次,正如你注意到的,你不能一次性使用AddItem添加数组 – 你需要添加一个项目,然后循环填充列,记住索引是基于0的:

 With TabData.DataTable .AddItem For n = 1 to LastColRA .List(.ListCount - 1, n - 1) = Sheet1.Cells(x + 2, n).Value next n End With 

这是一个可以使用10列以上的版本:

 Dim i As Long, counter As Long, counter_RA As Long, x As Long Dim LastColRA As Long, LastColCP As Long Dim vList() LastColRA = Sheet1.Cells(1, Columns.Count).End(xlToLeft).Column LastColCP = Sheet2.Cells(1, Columns.Count).End(xlToLeft).Column 'Check to make sure that enough items were selected For x = 0 To ListBox2.ListCount - 1 If ListBox2.Selected(x) Then counter_RA = counter_RA + 1 ReDim Preserve vList(1 To LastColRA, 1 To counter_RA) For i = 1 To LastColRA vList(i, counter_RA) = Sheet1.Cells(x + 2, i).Value Next i End If Next x For x = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(x) Then counter_RA = counter_RA + 1 ReDim Preserve vList(1 To LastColRA, 1 To counter_RA) For i = 1 To LastColRA vList(i, counter_RA) = Sheet2.Cells(x + 2, i).Value Next i End If Next x With TabData.DataTable .ColumnCount = LastColRA .Column = vList End With