Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を検索するExcelマクロ

シート名を検索するExcelマクロ

対象:Excel2007, Excel2010, Excel2013

「vba シート名 探す」
「エクセル マクロ シート名 検索」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

シート名を検索するExcelマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。

[スポンサードリンク]

アクティブシートより右のシート名を検索するサンプルマクロ

検索して見つかったときにどうするのかによって、さまざまな仕様が考えられそうですが、アクティブシートより右に存在するシートを検索して、見つかったらそのシートを選択するというマクロを作成してみました。

Sub アクティブシートより右のシート名を検索して選択する()

 Dim sh_find As String
 Dim i As Long
 Dim msg As String

 sh_find = InputBox("検索するシート名を入力してください。")
 If sh_find = "" Then Exit Sub

 On Error GoTo ERR_HNDL

 For i = ActiveSheet.Index + 1 To Sheets.Count
  If Sheets(i).Name Like "*" & sh_find & "*" Then
   Sheets(i).Select
   Exit Sub
  End If
 Next i

 msg = "指定された文字列をシート名に含むシートは、アクティブシートより右に存在しません。"
 MsgBox msg

 Exit Sub

ERR_HNDL:

 Select Case Err.Number
  Case 1004
   msg = "見つかったシートは非表示のため選択できません。"
  Case Else
   msg = Err.Description & ":" & Err.Number
 End Select

 MsgBox msg

End Sub

上記のマクロを実行すると、
「検索するシート名を入力してください。」
と記載されたインプットボックスが表示され、入力された文字列をシート名に含むシートを検索して、みつかったときにはそのシートを選択します。

サンプルマクロの解説

検索した文字列を含むシートが複数あったときにどうするのか、いろいろ考え方がありそうですが、ここでは最初に見つかったシートを選択するようにしました。

そのため、アクティブシートより右のシートだけを検索するという仕様にしました。

主たる処理はもちろんFor ~ Next文の部分です。

アクティブシートの右のシートから、一番左のシートまでループを開始し、
 For i = ActiveSheet.Index + 1 To Sheets.Count

もし指定された文字列をシート名に含んでいたら、
  If Sheets(i).Name Like "*" & sh_find & "*" Then

そのシートを選択してマクロを終了しています。
   Sheets(i).Select
   Exit Sub

指定された文字列を含むシートがアクティブシートより右に存在しなければ、メッセージボックスを表示してマクロを終了します。
 msg = "指定された文字列をシート名に含むシートは、アクティブシートより右に存在しません。"
 MsgBox msg

シートが非表示のときにシートを選択しようとするとエラーになってしまいますからメッセージを表示するようにエラー処理を入れています。
 Select Case Err.Number
  Case 1004
   msg = "見つかったシートは非表示のため選択できません。"

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » シート名を検索するExcelマクロ

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.