📘 Excel逆引き事典

【VBA】非表示シートを配列を使って高速に値をクリアする方法

毎回手作業で非表示シートのデータを消去するのは時間がかかるだけでなく、ミスも起こりやすいです。この記事では、配列を使用して高速に非表示シートのデータをクリアするVBAマクロを作成し、業務効率化をお手伝いします。

サンプルコード

VBA
Option Explicit
Sub ClearHiddenSheetValues()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long
    Dim dataRange As Range
    Dim dataArray() As Variant
    
    ' 非表示シートを取得
    Set ws = ThisWorkbook.Sheets("Sheet1")
    If Not ws Is Nothing Then
        If ws.Visible = xlSheetHidden Or ws.Visible = xlSheetVeryHidden Then
            Application.ScreenUpdating = False
            Application.DisplayAlerts = False
            
            ' データ範囲を取得
            lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
            Set dataRange = ws.Range("A2:A" & lastRow)
            
            ' 配列にデータを読み込む
            ReDim dataArray(1 To dataRange.Rows.Count, 1 To dataRange.Columns.Count)
            dataRange.Value = dataArray
            
            ' データ範囲をクリア
            ws.Range("A2:A" & lastRow).ClearContents
            
            Application.ScreenUpdating = True
            Application.DisplayAlerts = True
        End If
    Else
        MsgBox "指定されたシートが存在しません。", vbExclamation, "エラー"
    End If
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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