
『Microsoft Excel』(以下Excel、エクセル)の中の機能としてある[VBA] について基本的な説明をしていきます。
仕事の改善や個人的な知識向上に役立ててください(^o^)
第18回目の今回は
VBAでのシートの検索方法、シート名の抽出方法
について解説していきますので、よろしくお願いします。
前回までのVBAに関するINDEXは下記を参照してくださいね。
↓サブログ内部リンク(VBA用INDEX)↓
-
-
目次
Excel VBA講座-目次(INDEX)
サブローExcel VBAに関する説明を今後増やして行く予定なので、各リンクに飛ぶような目次(INDEX)を作りました。 随時更新していくので、よろしくお願いします。 スラスラ読めるExcel VBA ...
続きを見る
「シートの検索・抽出」について
ワークシート内ではシート数はかなりの枚増やすことができます。⇨使用可能なメモリに依存
(実際にはそんなに多くのシートはないと思いますが)仮に1000シートあるとして、そこからあるシートを探そうとしたとき、手作業で確認するのは手間もかかりますし、探し漏れもでてくる可能性があります。またそもそも存在していない可能性もあります。もしVBAを使用して検索したシートが存在しない場合、エラー処理を実施していない場合はエラーが発生してしまいます。
「シートの検索」の例
例) 1月~12月の12個のシートから5月のシートを検索して見つけてから、そのシートをアクティブにする
Sub シート検索()
'String型の変数を宣言します。
Dim 検索シート As String
'Worksheet型の変数を宣言します。
Dim シート As Worksheet
'"入力フォーム"シートをアクティブにします。
Sheets("入力フォーム").Select
'"検索シート"の変数にB2セルの文字を代入します。
検索シート = Range("B2").Value
'検索シートにシートの名前を1つずつ格納し、対象になるシートがなくなるまで、下記の処理を繰り返します。
For Each シート In Worksheets
’もし検索シートが見つかったら
If シート.Name = 検索シート Then
'検索シートで見つかったシートを選択します。
Worksheets(検索シート).Select
’(検索シートが見つかった場合)マクロ処理を抜けます。
Exit Sub
’If 処理を抜けます。
End If
'次のシート検索にうつる
Next
’変数(検索シート)が見つからなかった場合、下記のメッセージを表示させます。
MsgBox 検索シート & "シートは存在しません。"
’マクロを終了します。
End Sub
◎シート検索を実行(B2セルの5月のシート検索)すると・・・・・
◎検索シート(5月)がアクティブシートになります。
「シート名の抽出」方法
ブックにある全てのシート名を抽出する方法です。For Each...Nextステートメントを使って、ワークブック内の全てのワークシート名をセルに書き出していきます。
Sub シート名抽出()
'Worksheet型の変数を宣言します。
Dim mySheet As Worksheet
'Long型の変数を宣言します。
Dim i As Long
'iを2と設定します。行の設定(A1セルには"シート名"と入力されているので、2列目から格納していく)
i = 2
'”検索シート”にシートの名前を1つずつ格納し、シートがなくなるまで、下記の処理を繰り返します。
For Each mySheet In Worksheets
’"シート抽出"シートのA2セルから下方向のセルにシート名を順次格納していきます。
Sheets("シート抽出").Cells(i, 1).Value = mySheet.Name
'iに1を加算することにより、次に見つかったシート名を1行下(A3⇨A4⇨A5⇨・・・・に入力するようにします。
i = i + 1
’繰り返します。
Next
’シート名の抽出が終わったら、下記のメッセージを表示させます。
MsgBox ”シート名の抽出が完了しました。"
’マクロを終了します。
End Sub
◎シート抽出のマクロを実行すると・・・・・
◎全てのシート名が抽出されます。

下のVBA講座も是非ご覧下さい!!
関連
前回のVBA講座(第17回)
『条件付き書式』を設定してみよう!【VBA入門講座#17】
関連
次回のVBA講座(第19回)