У меня есть лист с данными счета-фактуры в виде на изображении ниже :
Затем я создал сводную таблицу для суммирования всех счетов (основнойпричина, по которой сводная таблица группирует счет с тем же номером);затем я создал список, заполненный данными из этой сводной таблицы.
Последний шаг, мне нужно иметь возможность выбрать счет из первого списка и заполнить другой список только выбранным счетом # ивсе связанные данные.
Я мог выполнять все эти шаги до последнего шага, где моя проблема касается ограничения в 10 столбцов при заполнении списка с помощью addItem. Мне нужна помощь в поиске способа связывания, чтобы заполнить второй список более 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 только как ниже :
Итак, моя проблемаприходит, когда я пытаюсь сделать еще один .AddItem с ограничением 10.
Я был бы очень признателен за любую помощь, чтобы решить эту проблему.
Заранее большое спасибо.