Excel VBA: Indexando uma coleção de SpecialCells

0

Tenho notado que, se você aplicar o método SpecialCells a um intervalo e, em seguida, indexar os elementos da coleção resultante, o que é retornado são todos os elementos do intervalo original, não do novo intervalo com base nos critérios SpecialCells .

Sub test()

    Dim i As Range

    Selection.SpecialCells(xlCellTypeConstants).Select

    For Each i In Selection
        Debug.Print i
    Next

End Sub

Por exemplo, se você executar o código acima com base em um intervalo consistindo em uma constante, seguida por uma fórmula, seguida por uma constante e, em seguida, verificar os elementos de Seleção na janela Imediata, obterá os valores: 1, 2 3 (veja a imagem abaixo).

No entanto, se você percorrer a Seleção, os valores 1 e 3 serão retornados, conforme esperado (novamente, veja a imagem abaixo). Alguém sabe por que os valores retornados diferem em cada caso?

    
por STim 12.07.2018 / 09:29

1 resposta

0

SituaçõesparatestaracoleçãoemB1:B3:

  1. 1,2,3.
  2. 1=2,3.
  3. 1,=a1+a2,3.

    SubTestofCollection()DimCollection1AsCollectionDimnAsIntegerDimxAsIntegerSetCollection1=NewCollectionn=1OnErrorResumeNextForEachCellInRange("B1:B3")
            Collection1.Add n, CStr(Cell.Value)
            n = n + 1
        Next Cell
     On Error GoTo 0
    
     For x = 1 To Collection1.Count
        Range("C" & x).Value = Collection1.Item(x)
     Next x
    
    End Sub
    
por 12.07.2018 / 14:19