Vbaを使用してシートが存在するかどうかを確認するにはどうすればよいですか?
シートを作成、削除、移動、またはコピーしたい場合は、このシートが存在するかどうかを知る必要があります。
シートが存在するかどうかを確認するコードを作成するには、ブック内の各シートを処理し、指定した名前と一致するループが必要です。しかし、問題は、これには 2 つの異なるループ ( For Next と For Each ) を使用できるということです。今日は両方を使用します。
このチュートリアルでは、これを行うさまざまな方法を見ていきます。したがって、リボンに [開発] タブがあることを確認し、 VBA エディタを開いてこのコードを記述してください。
現在のワークブックにシートが存在するかどうかを確認します
このループを使用すると、ワークブック内のすべてのシートを参照し、それらを 1 つずつループして、シート名を検索するシートの名前と一致させることができます。
次の手順を実行します:
- まず、ループの実行時にシートに使用し、検索するシートの名前を保存する変数を宣言します。
- 次に、入力ボックスにコード行を記述して、検索するシートの名前を入力します。
- その後、For Each キーワードでループを開始します。そして、変数を使用してワークブック内の各ワークシートを参照します。
- ここから、 IF THEN ELSEステートメントを作成してシート名と入力ボックスに入力した名前を照合し、一致するものが見つかった場合はメッセージ ボックスを表示して手順を終了する必要があります。
- 最後に、一致するものが見つからなかった場合に通知するメッセージ ボックスが表示されます。
役立つリンク:マクロの実行–マクロ レコーダー– Visual Basic Editor –パーソナル マクロ ハンドブック
完全なコード:
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For Each sht In ThisWorkbook.Worksheets If sht.Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next sht MsgBox "No! " & shtName & "is not there in the workbook." End Sub
このコードがどのように機能するかを説明します。このコードを実行すると、検索するシートの名前を入力するように求めるメッセージが表示されます。
その後、各シートを調べて名前と入力した名前を照合し、名前がシートと一致する場合は 1 つのメッセージを表示し、一致しない場合は別のメッセージを表示します。
以下は、シートが存在するかどうかを確認する別のコードです。
Sub vba_check_sheet() Dim sht As Worksheet Dim shtName As String Dim i As Long i = Sheets.Count shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") For i = 1 To i If Sheets(i).Name = shtName Then MsgBox "Yes! " & shtName & " is there in the workbook." Exit Sub End If Next i MsgBox "No! " & shtName & " is not there in the workbook." End Sub
このコードは、FOR NEXT ループを使用し、ブック内のシートの合計数を使用し、それに基づいて、入力した名前と一致する各シートをループします。
閉じたブックにシートが存在するかどうかを確認する
次のコードには、閉じたブック内のシート名を検索するループがあります。ファイルを参照するには、ファイル アドレスを使用しました。
Sub vba_check_sheet() Dim wb As Workbook Dim sht As Worksheet Dim shtName As String shtName = InputBox(Prompt:="Enter the sheet name", _ Title:="Search Sheet") Application.ScreenUpdating = False Set wb = Workbooks.Open _ ("C:UsersDellDesktopsample-file.xlsx") For Each sht In wb.Worksheets If sht.Name = shtName Then wb.Close SaveChanges:=True MsgBox "Yes! " & shtName & " is there in the workbook." _ , vbInformation, "Found" Exit Sub End If Next sht Application.ScreenUpdating = False MsgBox "No! " & shtName _ & " is not there in the workbook.", _ vbCritical, "Not Found" End Sub
このマクロを実行すると、画面の更新を無効にしたときの後ろのファイルが開き、すべてのシートを通過すると、画面の更新を有効にするコードが完成します。 ‘画面。
注:ご覧のとおり、ファイルの場所のアドレスにはファイル拡張子が含まれています。つまり、それを参照するには正しいファイル拡張子が必要です。
関連するチュートリアル
- Excel で VBA を使用してシート全体を消去する
- VBA を使用して Excel でシートをコピーおよび移動する
- Excel で VBA を使用した COUNT シート
- Excel で VBA を使用してシートを削除する
- Excel で VBA を使用してシートを非表示および表示する