当我使用AutoCilter的SpecialCells在VBA中获取可见单元格时出错

我的主要目标是复制自动筛选器的可见单元格,然后将可见单元格的尺寸复制到新工作表。 我正在使用这个代码:

Sheets(1).AutoFilterMode = False Sheets(1).Range("A1:A1").AutoFilter Field:=columnaNumeroIntervalo, criteria1:=CDec(paramCantidadCriterio) Sheets(1).Range("A1:A1").AutoFilter Field:=columnaNumeroIntervaloUnidades, Criteria1:=paramUnidadesCriterio MsgBox AutoFilter.Range.SpecialCells(xlCellTypeVisible)(2, 11).Value 

用最后一行我想检查单元格的值。 如果我使用Cells(2,11)而不是SpecialCells我可以看到单元格中的所有单元格都是可见的,不可见的。 所以我想用SpecialCells

如果我使用特殊的单元格,我得到以下错误:

error '-2147417848 (80010108) in runtime. Automatization error.

对于执行的types来说,它似乎进入一个循环,并最终给出这个错误。 也许SpecialCells修改自动filter,然后在每次修改再次执行自动filter?

要使用AutoFilter的可见单元格,如果打算排除标题,则必须使用“ Offset 。 你得到的错误是因为你错过了一个“。” 在Cells(2,11)之前Cells(2,11)

 '~~> Remove any filters ActiveSheet.AutoFilterMode = False '~~> Filter, With rRange .AutoFilter Field:=1, Criteria1:=strCriteria '~~> offset(to exclude headers) Debug.Print .Offset(1, 0).SpecialCells(xlCellTypeVisible).Cells(2,11).Value Debug.Print .SpecialCells(xlCellTypeVisible).Cells(2,11).Value End With '~~> Remove any filters ActiveSheet.AutoFilterMode = False 

我决定添加这个作为这个答案的一部分,以便将来可以帮助别人。

假设我们的范围是

A1:F6

在这里输入图像说明

当你运行下面的代码,根据你是否使用Offset ,你会得到这些结果。

 Option Explicit Sub Sample() '~~> Remove any filters ActiveSheet.AutoFilterMode = False Dim rRange As Range Dim Rnge As Range Set rRange = Sheets("Sheet1").Range("A1:F6") '~~> Filter, With rRange .AutoFilter Field:=1, Criteria1:="<>2" '~~> Offset(to exclude headers) Set Rnge = .Offset(1, 0).SpecialCells(xlCellTypeVisible) Debug.Print Range(Rnge.Address).Address Debug.Print ActiveSheet.Cells(3, 2).Address Debug.Print Range(Rnge.Address).Cells(3, 2).Address Debug.Print "--------------------------------------------------" '~~> To include headers Set Rnge = .SpecialCells(xlCellTypeVisible) Debug.Print Range(Rnge.Address).Address Debug.Print ActiveSheet.Cells(3, 2).Address Debug.Print Range(Rnge.Address).Cells(3, 2).Address End With '~~> Remove any filters ActiveSheet.AutoFilterMode = False End Sub 

在这里输入图像描述

HTH