Я написал программу VBA для запуска добавить список элементов из видимого диапазона листа Excel. Смотрите код ниже:
Dim LR, LRR As Integer
Dim FilterArea As Range
Dim oneCell As Variant
Dim FiltCount As Integer
LR = Sheet2.Range("A" & Rows.Count).End(xlUp).Row
Sheet2.Cells.AutoFilter
UserFrom3.ListBox1.Clear
FiltCount = 0
'AutoFiltering the FilterArea
With Sheet2.Range("A2:N" & LR)
If (UserFrom3.ComboBox3 <> "") Then
FiltCount = 1
.AutoFilter _
Field:=4, _
Criteria1:=UserFrom3.ComboBox3
End If
If (UserFrom3.ComboBox1 <> "") Then
FiltCount = 1
.AutoFilter _
Field:=5, _
Criteria1:=UserFrom3.ComboBox1
End If
If (UserFrom3.TextBox1 <> "") Then
FiltCount = 1
.AutoFilter _
Field:=8, _
Criteria1:="*" & UserFrom3.TextBox1.Text & "*"
End If
End With
If FiltCount = 1 Then
With UserFrom3.ListBox1
.ColumnCount = 7
.ColumnHeads = False
.ColumnWidths = "50,35,50,50,75,89,100"
For Each oneCell In Sheet2.Range("A2:A" & LR).SpecialCells(xlCellTypeVisible)
.AddItem CStr(oneCell.Value)
.List(.ListCount - 1, 1) = oneCell.Offset(0, 1).Value
.List(.ListCount - 1, 2) = oneCell.Offset(0, 2).Value
.List(.ListCount - 1, 3) = oneCell.Offset(0, 3).Value
.List(.ListCount - 1, 4) = oneCell.Offset(0, 4).Value
.List(.ListCount - 1, 5) = oneCell.Offset(0, 5).Value
.List(.ListCount - 1, 6) = oneCell.Offset(0, 6).Value
Next oneCell
End With
End If
End Sub
Приведенный выше код работает нормально всякий раз, когда я предоставляю действительный ввод в пользовательский интерфейс. Возвращает результат. Когда нечего фильтровать ... т.е. когда результат фильтра равен нулю. и нулевые строки видны, кроме заголовков (в Excel и ListBox).
Однако, после этой видимой ситуации с нулевыми строками, я получаю ошибку при следующем поиске. Listbox загружает все ненужные данные, кроме моих диапазонов (то есть показывает значения из других диапазонов) и показывает ошибку в коде
.List(.ListCount - 1, 6) = oneCell.Offset(0, 6).Value
Сообщение об ошибке «Ошибка времени выполнения 1004 - Ошибка приложения или объекта».
Может кто-нибудь подсказать, в чем проблемы?