📘 Excel逆引き事典

【VBA】可視セル(フィルタ結果)を確認メッセージを出さずに配列に格納する方法

毎日大量のデータを扱う実務では、フィルタ結果を素早く処理することが重要です。しかし、通常の方法では確認メッセージが表示され、効率が落ちてしまいます。この記事では、VBAを使用して可視セル(フィルタ結果)を配列に格納する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub FilteredCellsToArray()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' フィルタリングされた範囲の取得
    Dim rng As Range
    Set rng = ws.Range("A2:A100")
    
    Application.ScreenUpdating = False
    On Error Resume Next
    Set rng = Intersect(rng, rng.SpecialCells(xlCellTypeVisible))
    If Err.Number <> 0 Then Exit Sub
    On Error GoTo 0
    
    ' 配列の初期化
    Dim arr() As Variant
    ReDim arr(1 To rng.Count, 1 To 1)
    
    ' データを配列に格納
    Dim i As Long
    For i = 1 To rng.Count
        arr(i, 1) = rng.Cells(i).Value
    Next i
    
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。