在vba中处理可见的单元格

我有一个名为“Abschluss”的工作表。 在这个工作表中,我使用filter来获取我想用我的vba脚本处理的数据范围。 所以我只想处理可见的行。 我的vba脚本看起来像

For Each i In Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows If (WorksheetFunction.CountIf(Range("B2:B" & i), Cells(i, 2)) = 1) Then _ Umsetzung_Kapitel_1.AddItem Cells(i, 2) Next 

这不起作用,我得到运行时错误438.你知道问题在哪里? 我假设Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows返回错误的数据types,但我无法修复它。

它看起来像你正在尝试填充一个combobox或一个列表框与唯一的项目,可能在UserForm?

尝试这个

 Private Sub UserForm_Initialize() Dim cUnique As Collection Dim Rng As Range Dim Cell As Range Dim sh As Worksheet Dim vNum As Variant Set sh = ThisWorkbook.Sheets("Abschluss") Rws = sh.Cells(Rows.Count, "B").End(xlUp).Row Set Rng = sh.Range(sh.Cells(2, 2), sh.Cells(Rws, 2)).SpecialCells(xlCellTypeVisible) Set cUnique = New Collection On Error Resume Next For Each Cell In Rng.Cells cUnique.Add Cell.Value, CStr(Cell.Value) Next Cell On Error GoTo 0 For Each vNum In cUnique ComboBox1.AddItem vNum Next vNum End Sub 

改成

 Dim i As Long Dim colCount As Long: colCount = Worksheets("Abschluss").SpecialCells(xlCellTypeVisible).Rows.Count For i = 1 to colCount ....