Автор: Anton T
Дата сообщения: 15.01.2007 12:23
The okk
Здарова! Я не знаю как отфильтровать в ListView?
[more=Здесь коды]
Код: Private Sub txtFiltBox_Change()
Dim rng As Range
Dim r As Range
Dim strFilt As String
Dim strFiltLen As Integer
Dim arrFilt As Variant 'динамический массив
Dim ColCnt As Integer
Dim i As Integer, c As Integer
ColCnt = ActiveSheet.UsedRange.Columns.Count
Set rng = ActiveSheet.UsedRange
strFilt = txtFiltBox.Text
strFiltLen = Len(strFilt)
i = 0
ReDim arrFilt(ColCnt - 1, i)
For Each r In rng.Rows
If strFilt = Left(r.Cells(1.1).Text, strFiltLen) Then
ReDim Preserve arrFilt(ColCnt - 1, i)
For c = 1 To ColCnt
arrFilt(c - 1, i) = r.Cells(1, c).Value
Next
i = i + 1
End If
Next
ListView1 = arrFilt
End Sub
Private Sub txtFiltBox_Enter()
With txtFiltBox
.BackColor = RGB(205, 236, 253)
.Font.Bold = True
End With
End Sub
Private Sub txtFiltBox_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With txtFiltBox
.BackColor = RGB(255, 255, 255)
.Font.Bold = False
End With
End Sub
Private Sub UserForm_Initialize()
Dim RowCounter As Long
Dim ls As Worksheet
With ListView1 'и в ListView
.ColumnHeaders.Add , , "Фамилия", 75 'Фамилия
.ColumnHeaders.Add , , "Имя", 60 'Имя
.ColumnHeaders.Add , , "Отечество", 70 'Отечество
.ColumnHeaders.Add , , "Город", 45 'Город
.ColumnHeaders.Add , , "Адрес", 115 'Адрес
.ColumnHeaders.Add , , "дом", 30 'Дом
.ColumnHeaders.Add , , "кв.", 30 'Квартира
.ColumnHeaders.Add , , "Книга 1", 40 'Кинга 1
.ColumnHeaders.Add , , "Книга 2", 40 'Книга 2
.ColumnHeaders.Add , , "Страница", 50 'Страница
.ColumnHeaders.Add , , "Реестр №", 50 'Реестровый номер
.Gridlines = True 'рисуем сетку (ибо удобно!)
.View = lvwReport 'выводить отсчета
For Each ls In Worksheets 'в каждом листе
For RowCounter = 1 To ls.UsedRange.Rows.Count 'проходим по всем строкам
With .ListItems
.Add = ls.Cells(RowCounter, 1) 'добавляем элемент (Фамилию)
.Item(.Count).SubItems(1) = ls.Cells(RowCounter, 2) 'и его подэлементы (Имя)
.Item(.Count).SubItems(2) = ls.Cells(RowCounter, 3) 'Отечество
.Item(.Count).SubItems(3) = ls.Cells(RowCounter, 4) 'Город
.Item(.Count).SubItems(4) = ls.Cells(RowCounter, 5) 'Адрес
.Item(.Count).SubItems(5) = ls.Cells(RowCounter, 6) 'Дом
.Item(.Count).SubItems(6) = ls.Cells(RowCounter, 7) 'Квартира
.Item(.Count).SubItems(7) = ls.Cells(RowCounter, 8) 'Книга 1
.Item(.Count).SubItems(8) = ls.Cells(RowCounter, 9) 'Книга 2
.Item(.Count).SubItems(9) = ls.Cells(RowCounter, 10) 'Страница
.Item(.Count).SubItems(10) = ls.Cells(RowCounter, 11) 'Реестр №
End With
Next
Next
End With
End Sub