У меня есть таблица в Excel, и я хочу, чтобы записи отображались в пользовательской форме, используя элемент управления listview. Проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы отображались только 5 столбцов и только уникальные строки.
Код, который у меня есть, следующий:
Private Sub LoadListView()
Dim wksSource As Worksheet
Dim rngData, rngCell As Range
Dim LstItem As ListItem
Dim RowCount, ColCount, i, j As Long
Dim CountryCol, ShippingWay, SortCode, FirstException, LastException, Performance_OK_NOK, Container,
CountSimilar, a As Integer
Set wksSource = Worksheets("Sheet3")
Set rngData = wksSource.Range("A1").CurrentRegion
Me.ListView1.ColumnHeaders.Add Text:="RowNr", Width:=70
For Each rngCell In rngData.Rows(1).Cells
If rngCell = "service_def_code" Or rngCell = "package_sort" Or rngCell = "ship_to_country_id" Or
rngCell = "first_tracking_exception_message" _
Or rngCell = "last_tracking_exception_message" Then
Me.ListView1.ColumnHeaders.Add Text:=rngCell.Value, Width:=80
End If
Next rngCell
RowCount = rngData.Rows.Count
ColCount = rngData.Columns.Count
For i = 1 To ColCount
If wksSource.Cells(1, i) = "ship_to_country_id" Then
CountryCol = i
ElseIf wksSource.Cells(1, i) = "service_def_code" Then
ShippingWay = i
ElseIf wksSource.Cells(1, i) = "package_sort" Then
SortCode = i
ElseIf wksSource.Cells(1, i) = "first_tracking_exception_message" Then
FirstException = i
ElseIf wksSource.Cells(1, i) = "last_tracking_exception_message" Then
LastException = i
ElseIf wksSource.Cells(1, i) = "performance_result" Then
Performance_OK_NOK = i
End If
Next i
j = 1
For i = 2 To RowCount
If wksSource.Cells(i, Performance_OK_NOK) = "NOK" then
Set LstItem = Me.ListView1.ListItems.Add(Text:=j)
LstItem.ListSubItems.Add Text:=rngData(i, CountryCol)
LstItem.ListSubItems.Add Text:=rngData(i, ShippingWay)
LstItem.ListSubItems.Add Text:=rngData(i, SortCode)
LstItem.ListSubItems.Add Text:=rngData(i, FirstException)
LstItem.ListSubItems.Add Text:=rngData(i, LastException)
j = j + 1
end if
next i
end sub
Итак, что я хочуДля этого нужно отобразить только уникальные строки, а подэлементы представляют собой строку. Я проверил и искал решение, но не смог найти того, которое понимаю. Может кто-нибудь помочь, пожалуйста?