今回はブック内に特定の名前のシートがあるか判定するFunctionを備忘録も兼ねて残しておきたいと思います。
コードの紹介
早速コードを紹介します。
Function checkIsTargetSht(targetShtName As String) As Boolean
Dim MySht As Worksheet
For Each MySht In ThisWorkbook.Worksheets
If MySht.Name = targetShtName Then
checkIsTargetSht = True
Exit Function
End If
Next MySht
checkIsTargetSht = False
End Function
動作は至ってシンプルで、ざっくり以下のような動作になります。
- ブック内に引数で指定したシート名(targetShtName)があるか判定
- あったらTrueを返し、なければFalseを返す
使い方
次に使い方を紹介します。私自身よく使っている方法なので、頭に入れておくと役に立つかもしれません。
特定のシートを削除する
はじめに特定のシートを削除する方法です。
Sub delete_TargetSht()
Dim target As String
targetShtName = "はりぼな"
If checkIsTargetSht(targetShtName) Then
ThisWorkbook.Worksheets(targetShtName).Delete
MsgBox targetShtName & "シートを削除しました。"
Else
MsgBox targetShtName & "シートがありませんでした。"
End If
End Sub
今回の例では変数のtargetShtNameを用意し、その中に削除したいシート名(はりぼな)を格納しています。これをcheckIsTargetShtの引数に指定して、ブック内に「はりぼな」シートがあるかどうかを判定している感じです。

特定のシートを追加する
次に特定のシートを追加する方法です。
Sub add_TargetSht()
Dim targetShtName As String
Dim targetSht As Worksheet
targetShtName = "はりぼな"
If checkIsTargetSht(targetShtName) Then
MsgBox targetShtName & "シートは作成済みです。"
Else
Set targetSht = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
targetSht.Name = targetShtName
MsgBox targetShtName & "シートを追加しました。"
End If
End Sub
こちらも削除した時と同様でcheckIsTargetShtの引数に追加したいシート名を指定(targetShtName)し既にシートがあれば何もせず、なければシート一覧の一番後ろにシートを作成するイメージです。


まとめ
今回はブック内に特定の名前のシートがあるか判定するFunctionを紹介しました。
マクロでシートを操作する際にシートがあるかどうか判定するのは非常に大事な処理になるので、是非参考にしていただければと思います。
このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!
コメント