【ExcelVBA】シートの存在チェック
Excelで指定したシートがあるかどうかチェックして、存在しなければ作成し、存在していれば指定したシートを選択するという処理
シートの存在チェック
すべてのシートをループで回しながら名前をチェックするというやり方もあるけど、「On Error Resume Next」を使えばループする必要もなくチェックできる。
エラーが発生していなければ「Err.Number」の値が「0」となることを利用する。
<処理の手順>
- inputboxを使って選択したいシート名を入力
- 入力されたシートを選択
- エラーが発生していれば存在しないので新規に作成
- エラーがなければ存在しているので、シートを選択
<ソースコード>
Sub SelectSheet()
Dim SheetName As String
SheetName = InputBox("シート名を入力してください", "シート名入力")
If SheetName = "" Then
MsgBox "シート名が入力されませんでした。"
Exit Sub
End If
' この先のエラーを無視
On Error Resume Next
' 入力されたシートを選択
Worksheets(SheetName).Select
If Err.Number <> 0 Then
' エラーが発生・・・シートが存在しない
MsgBox SheetName & "は存在しないので新規に作成します"
Worksheets.Add After:=ActiveSheet
ActiveSheet.Name = SheetName
Else
' エラーが発生しなかった・・・シートが存在
MsgBox SheetName & "を選択します"
xWsheet.Select
End If
End Sub