VBAマクロ/コードのブックで作成または削除したワークシートが存在するかどうかを確認する必要がある場合があります。関数/マクロを使用してこれを簡単に行うことができます。ワークシートが存在するかどうかを確認する方法は複数あります。

この記事では、次の方法について説明します。

{空} 1。 UDF2として知られるユーザー定義関数。メッセージボックスを介したサブルーチン

最初のオプション:ユーザー定義関数

次のスナップショットにはいくつかのシート名が含まれています。列Aのシート名が存在するかどうかを確認します。

img1

特定のシートが存在するかどうかを確認するには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。[コード]グループから[VisualBasic]を選択します

img2

  • 以下のコードを標準モジュールにコピーします

Option Explicit

Function WorksheetExists(ByVal WorksheetName As String) As Boolean

Dim Sht As Worksheet

For Each Sht In ThisWorkbook.Worksheets

If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then

WorksheetExists = True

Exit Function

End If

Next Sht

WorksheetExists = False

End Function

img3

確認するために、セルB2のUDFを= WorksheetExists(A2)として使用します

img4

  • 上の画像では、「MasterSheet」はサンプルワークブックに存在しません。したがって、式はFalseとして答えを与えています

コードの説明:

この関数は、他のアクティビティを実行するマクロから「WorksheetName」の値を取得します。コードに従って変更する必要がある場合は、変更できます。

_ThisWorkbook.Worksheetsの各Shtについて_および_NextSht_は、それぞれループの開始部分と終了部分です。

Then If Application.Proper(Sht.Name)= Application.Proper(WorksheetName)Then _ WorksheetExists = True_シート名がメインマクロから渡されたシート名と一致するかどうかを確認します。含まれている場合、WorksheetExistsはTrueであり、関数を終了できます。それ以外の場合、WorksheetExists = Falseはメインマクロに返されます。すべてのシートがチェックされるまで、ループは最初のシートから次のシートに移動します。

SecondOption:メッセージボックスを介したサブルーチン

UDFを呼び出す通常のサブルーチンを作成できます。指定されたシートが見つかると、メッセージボックスに「シートが存在します」と表示されます。見つからない場合は、「シートが見つかりません」というメッセージボックスがポップアップ表示されます。

確認するために、次のコードを標準モジュールにコピーします。

Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean

If wb Is Nothing Then Set wb = ThisWorkbook

With wb

On Error Resume Next

WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName)

On Error GoTo 0

End With

End Function

Sub FindSheet()

If WorksheetExists2("Sheet1") Then

MsgBox "Sheet1 is in this workbook"

Else

MsgBox "Oops: Sheet does not exist"

End If

End Sub

img5

マクロ「FindSheet」を実行した後、シートが存在する場合は次のメッセージボックスが表示されます。

img6

Sheetが存在しない場合、次のメッセージボックスが表示されます:

img7

同様に、シートが存在するかどうかをチェックし、その後特定のアクションを実行する単純なIFループを作成できます。

Sub test()

Dim ws As Worksheet

For Each ws In ThisWorkbook.Worksheets

If ws.Name <> "Main" Then

ws.Range("A1").Value = ws.Name

Else

ws.Range("A1").Value = "MAIN LOGIN PAGE"

End If

Next ws

End Sub

img8

上記のマクロをテストするには、シート名「Main」を作成する必要があります。このマクロは非常に単純です。ワークブック内の各ワークシートをループします。次に、ワークシート名がMAINでないかどうかを確認します。MAINの場合は、そのシートのA1に「MAINLOGIN PAGE」のようなテキストを表示します。それ以外の場合は、セルA1のシート

img9

これは、シートが存在するかどうかを確認するもう1つの方法です。存在する場合はアクションAを実行し、存在しない場合はアクションBを実行します。結論:*ブックにシートが存在するかどうかを識別できます。都合に合わせてUDFまたはサブルーチンを使用できます。

image 48

私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。

_ご意見をお聞かせください。私たちの仕事を改善、補完、革新し、あなたのために改善する方法をお知らせください。 [email protected]_までご連絡ください