フィルター処理された範囲の値を配列にコピーすると、問題なく機能するようです。配列には、フィルター処理されたセルとフィルター処理されていないセルの両方の値が含まれます。ただし、配列の内容をフィルター処理された範囲にコピーして戻すと、結果が理解できなくなります。
これが私のコードです:
Sub test()
Dim rangecopy() As Variant
rangecopy() = Range(Cells(2, 1), Cells(14, 3)).Value
For c = LBound(rangecopy, 1) To UBound(rangecopy, 1)
rangecopy(c, 1) = c
rangecopy(c, 2) = c * 10
rangecopy(c, 3) = c * 100
Next
Range(Cells(2, 1), Cells(14, 3)).Value = rangecopy()
End Sub
次のような結果になるはずです。ここでは、マクロが配列を範囲にコピーしたときに、範囲はフィルタリングされていませんでした。
範囲が列Dでフィルター処理されている場合(「NO」がフィルターで除外されている場合)、結果は次のようになります。
まず、フィルタリングされたセルは更新されません。次に、列Bのほとんどのセルは配列の最初の列(4、5、6)から値を取得しますが、他のいくつかのセルは配列の2番目の列から正しく値を取得します(10)。最後の2行は#N/Aエラーで埋められています。これはそのように機能するはずですか?Office2010を使用しています。