Vbaを使用してシートが存在するかどうかを確認するにはどうすればよいですか?

シートを作成、削除、移動、またはコピーしたい場合は、このシートが存在するかどうかを知る必要があります。

シートが存在するかどうかを確認するコードを作成するには、ブック内の各シートを処理し、指定した名前と一致するループが必要です。しかし、問題は、これには 2 つの異なるループ ( For Next と For Each ) を使用できるということです。今日は両方を使用します。

このチュートリアルでは、これを行うさまざまな方法を見ていきます。したがって、リボンに [開発] タブがあることを確認し、 VBA エディタを開いてこのコードを記述してください。

現在のワークブックにシートが存在するかどうかを確認します

このループを使用すると、ワークブック内のすべてのシートを参照し、それらを 1 つずつループして、シート名を検索するシートの名前と一致させることができます。

次の手順を実行します:

  1. まず、ループの実行時にシートに使用し、検索するシートの名前を保存する変数を宣言します。
    declare-a-variable-to-use-for-the-sheet
  2. 次に、入力ボックスにコード行を記述して、検索するシートの名前を入力します。
    line-of-code-for-an-input-box
  3. その後、For Each キーワードでループを開始します。そして、変数を使用してワークブック内の各ワークシートを参照します。
    start-your-loop
  4. ここから、 IF THEN ELSEステートメントを作成してシート名と入力ボックスに入力した名前を照合し、一致するものが見つかった場合はメッセージ ボックスを表示して手順を終了する必要があります。
    write-an-if-then-else
  5. 最後に、一致するものが見つからなかった場合に通知するメッセージ ボックスが表示されます。
    message-box-to-show

役立つリンク:マクロの実行マクロ レコーダー– 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

このマクロを実行すると、画面の更新を無効にしたときの後ろのファイルが開き、すべてのシートを通過すると、画面の更新を有効にするコードが完成します。 ‘画面。

注:ご覧のとおり、ファイルの場所のアドレスにはファイル拡張子が含まれています。つまり、それを参照するには正しいファイル拡張子が必要です。

VBAとは

関連するチュートリアル

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です