我有一个工作表,其中包含发票数据为the image below:
然后,我创建了一个数据透视表以对所有发票求和(数据透视表将具有相同编号的发票分组的主要原因);然后,我创建了一个列表框,该列表框由该数据透视表中的数据填充。
最后一步,我需要能够从第一个列表框中选择一个发票,并仅用所选的发票编号和所有相关数据填充另一个列表框。
我能够执行所有这些步骤,直到最后一步,当您使用addItem填充列表框时,我的问题与10列限制有关。我需要帮助,找到一种方法来打包超过10列的第二个列表框。
这是我用来填充第一个列表框和第二个列表框的代码(当超过10列时,我的代码有问题):
Sub populatelstPO()
Dim ws As Worksheet
Dim rng As Range
Dim MyArray ' variant, receives one based 2-dim data field array
'~~> Change your sheetname here
'Set ws = Sheets("PurchaseRawData")
Set ws = Sheets("Sheet1")
'~~> Set you relevant range here
Set rng = ws.Range("A6:H" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row)
With Sheets("INVOICES LIST").lstInvoices
.Clear
.ColumnHeads = False
.ColumnCount = rng.Columns.Count
'~~> create a one based 2-dim datafield array
MyArray = rng
'~~> fill listbox with array values
.List = MyArray
'~~> Set the widths of the column here. Ex: For 5 Columns
'~~> Change as Applicable
.ColumnWidths = "120;100;110;120;120;110;110;100"
.TopIndex = 0
End With
Range("A1").Select
End Sub
使用上面的代码,我得到this:
这里的代码是根据第一个列表框中的选定发票填充第二个列表框:
Sub populatelstInvoiceItems()
Dim ws As Worksheet
Dim rng As Range
Dim LastRow As Long
Dim lC As Integer
Dim r As Integer
Set ws = Sheets("PurchaseRawData")
LastRow = ws.Range("C65536").End(xlUp).Row
Set rng = ws.Range("C3:Z" & ws.Range("C" & ws.Rows.Count).End(xlUp).Row)
lC = 0
With Sheets("INVOICE ITEMS").lstInvoiceItems
.Clear
.ColumnWidths = "120;100;110;120;120;110;110;100;100;100"
For r = 3 To LastRow
If ws.Cells(r, 3) = Sheets("INVOICE ITEMS").Cells(7, 5) Then
.AddItem
.List(lC, 0) = ws.Cells(r, 13)
.List(lC, 1) = ws.Range("N" & r)
.List(lC, 2) = ws.Range("D" & r)
.List(lC, 3) = ws.Range("P" & r)
.List(lC, 4) = ws.Range("R" & r)
.List(lC, 5) = ws.Range("S" & r)
.List(lC, 6) = ws.Range("J" & r)
.List(lC, 7) = ws.Range("K" & r)
.List(lC, 8) = ws.Range("W" & r)
.List(lC, 9) = ws.Range("L" & r)
lC = lC + 1
End If
Next
If .ListCount = 0 Then MsgBox "No data found"
End With
End Sub
仅将发票1234的第二个列表框填充为below:
因此,当我尝试执行另一个.AddItem限制为10个时,就会出现我的问题。
我非常感谢您提供解决此问题的帮助。
非常感谢。