シートは、Microsoft ExcelでVBAを使用して、ブック内に存在するかどうかを確認する
VBAマクロ/コードのブックで作成または削除したワークシートが存在するかどうかを確認する必要がある場合があります。関数/マクロを使用してこれを簡単に行うことができます。ワークシートが存在するかどうかを確認する方法は複数あります。
この記事では、次の方法について説明します。
{空} 1。 UDF2として知られるユーザー定義関数。メッセージボックスを介したサブルーチン
最初のオプション:ユーザー定義関数
次のスナップショットにはいくつかのシート名が含まれています。列Aのシート名が存在するかどうかを確認します。
特定のシートが存在するかどうかを確認するには、以下の手順に従ってVBエディターを起動する必要があります。[開発者]タブをクリックします。[コード]グループから[VisualBasic]を選択します
-
以下のコードを標準モジュールにコピーします
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
確認するために、セルB2のUDFを= WorksheetExists(A2)として使用します
-
上の画像では、「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
マクロ「FindSheet」を実行した後、シートが存在する場合は次のメッセージボックスが表示されます。
Sheetが存在しない場合、次のメッセージボックスが表示されます:
同様に、シートが存在するかどうかをチェックし、その後特定のアクションを実行する単純な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
上記のマクロをテストするには、シート名「Main」を作成する必要があります。このマクロは非常に単純です。ワークブック内の各ワークシートをループします。次に、ワークシート名がMAINでないかどうかを確認します。MAINの場合は、そのシートのA1に「MAINLOGIN PAGE」のようなテキストを表示します。それ以外の場合は、セルA1のシート
これは、シートが存在するかどうかを確認するもう1つの方法です。存在する場合はアクションAを実行し、存在しない場合はアクションBを実行します。結論:*ブックにシートが存在するかどうかを識別できます。都合に合わせてUDFまたはサブルーチンを使用できます。
私たちのブログが気に入ったら、Facebookで友達と共有してください。また、TwitterやFacebookでフォローすることもできます。
_ご意見をお聞かせください。私たちの仕事を改善、補完、革新し、あなたのために改善する方法をお知らせください。 [email protected]_までご連絡ください