【VBA】全てのシートを部分一致で取得する方法
日々の業務では、大量のデータの中から特定のキーワードを持つシートを探す作業が発生することがあります。この記事では、VBAを使用して部分一致で指定した文字列を含むすべてのシート名を一覧表示する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub GetSheetsWithPartialMatch()
Dim ws As Worksheet, lastRow As Long, i As Long
Dim targetString As String
' 部分一致で探したい文字列を指定
targetString = "部分一致"
Application.ScreenUpdating = False
' 結果を表示するシートを作成またはクリア
On Error Resume Next
Set ws = ThisWorkbook.Sheets("結果")
If Not ws Is Nothing Then ws.Delete
Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
ws.Name = "結果"
ws.Cells.ClearContents
' 各シートを検索し、部分一致するものがあればリストに追加
i = 1
For Each ws In ThisWorkbook.Worksheets
If InStr(1, ws.Name, targetString) > 0 Then
i = i + 1
ws.Range("A" & i).Value = ws.Name
End If
Next ws
Application.ScreenUpdating = True
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。