📘 Excel逆引き事典

【VBA】特定の名前のシートをエラー処理付きでコピーする方法

日々の業務で大量のデータを扱う際、同じ内容を何度も手作業で行うのは効率的ではありません。この記事では、特定の名前のシートをエラー処理付きで簡単にコピーする方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub CopySheetWithErrorHandling()
    Dim ws As Worksheet, targetWsName As String
    Dim newWs As Worksheet
    
    ' ターゲットのシート名を指定
    targetWsName = "コピーしたいシート"
    
    On Error GoTo ErrorHandler
    Set ws = ThisWorkbook.Sheets(targetWsName)
    Application.ScreenUpdating = False
    
    ' 新しいシートを作成し、元のシートをコピーする
    ws.Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    Set newWs = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    newWs.Name = targetWsName & "_Copy"
    
    Application.ScreenUpdating = True
    MsgBox "シートのコピーが完了しました。", vbInformation
    Exit Sub
ErrorHandler:
    If Err.Number <> 0 Then
        MsgBox "エラー: " & Err.Description, vbCritical
        Application.DisplayAlerts = False
        On Error Resume Next
        Set ws = Nothing
        Application.ScreenUpdating = True
        Application.DisplayAlerts = True
        Exit Sub
    End If
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。それでも問題がある場合は、具体的なエラーメッセージに基づいて対処方法を探しましょう。