📘 Excel逆引き事典

【VBA】非表示シートを配列を使って高速に置換する方法

手作業では時間がかかる非表示シートの置換作業を、VBAを使って高速に自動化しましょう!この記事では、配列を使用して非表示シートを効率的に置換する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub ReplaceHiddenSheets()
    Dim ws As Worksheet, arrOldNames() As Variant, arrNewNames() As Variant, i As Long
    Application.ScreenUpdating = False
    ' 非表示シートの名前を配列に格納
    ReDim arrOldNames(1 To ActiveWorkbook.Sheets.Count)
    For Each ws In ThisWorkbook.Worksheets
        If ws.Visible = xlSheetHidden Or ws.Visible = xlSheetVeryHidden Then
            i = i + 1
            arrOldNames(i) = ws.Name
        End If
    Next ws
    ' 新しいシート名を配列に格納
    ReDim arrNewNames(1 To UBound(arrOldNames))
    For i = LBound(arrOldNames) To UBound(arrOldNames)
        arrNewNames(i) = "Sheet" & CStr(i + 100) ' 新しいシート名を適宜変更
    Next i
    ' 配列の要素数分だけループして、非表示シートを置換
    For i = LBound(arrOldNames) To UBound(arrOldNames)
        ThisWorkbook.Sheets(arrOldNames(i)).Name = arrNewNames(i)
    Next i
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

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