EXCEL VBA ワークシート(Worksheets)の使い方・存在チェック・別ブック・検索(テクニック)
EXCEL VBA ワークシート(Worksheets)の使い方・存在チェック・別ブック・検索(テクニック)
今回は、ワークシート(Worksheet)に関する内容で4つのサンプルプログラムを作成しました。プログラムの内容としては、シート名を検索してシートの存在チェック・他のブックのシート名を取得するなどのテクニックを交えたサンプルプログラムになります。シート(Worksheet)は、セル(cells)と同様にプログラムの作成で頻繁に利用するので、使い方が広まるとプログラム作成の幅も広がります。それでは、順番に説明いたします。
【ワークシート(Worksheet)に関する他のページも参考になると思いますので参照して下さい。(一部抜粋)】
EXCEL VBA ワークシートの見出しの色を変更・ワークシートの表示・非表示の切り替え(Tab.ColorIndex・Visible)
EXCEL VBA ワークシートの使い方(シートの存在チェック・シート検索)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
' ''******** AKIRA55.COM ******* https://akira55.com/sheets_check/ ' Sub Worksheets_Check()''EXCEL VBA ワークシートの使い方(シートの存在チェック・シート検索) Dim ws As Worksheet Dim ws_Name As String ws_Name = Application.InputBox(Prompt:="シート名を入力", Title:="検索するワークシート名を入力", Default:="サッカー", Left:=100, Top:=200, Type:=3) 'InputBoxメゾット設定します。(戻り値をType:=1 数値に設定 '検索するワークシート名を入力します。 If ws_Name <> "False" Then ' For Each ws In Worksheets 'ワークシート全てを調べます If ws.Name = ws_Name Then '入力したシート名と登録されているシート名が有るか調べます。 MsgBox "シート名:" & ws.Name & "が有りました" Exit Sub 'シート名が有れば、シート名を表示して終了します。 End If Next ws Else MsgBox "キャンセルしました。" Exit Sub End If MsgBox "シート名:" & ws_Name & "は、有りませんでした" End Sub |
(画面クリックして拡大)
EXCEL VBA ワークシートの使い方(シートがなければ追加作成・シートの追加)
下記のサンプルプログラムは、ブック内のシート名「マスター」に【シート名一覧】がA列に作成されています。このデータを元に、現在作成されているワークシート名をチェックして【シート名一覧】に作成されていないシート名を追加作成するサンプルプログラムです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
' ''******** AKIRA55.COM ******* https://akira55.com/sheets_check/ ' Sub Worksheets_Check02() 'EXCEL VBA ワークシートの使い方(シートの存在チェック・無い場合はシートに追加する) Dim ws, ws01 As Worksheet Dim ws_Name, ws_Addname As String Dim I, lRow As Long Set ws01 = Worksheets("マスター") lRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 'ワークシート「マスター」A列の最終行を取得 ws_Addname = "" For I = 2 To lRow 'ワークシート「マスター」A列の最終行まで繰り返します。 ws_Name = ws01.Cells(I, "A") 'ワークシート「マスター」のA列のシート一覧データを順番に【ws_Name】へ代入します。 For Each ws In Worksheets 'ワークシート全てを調べます If ws.Name = ws_Name Then 'ワークシート「マスター」のA列のシート一覧データと既に登録されているか調べます。 ws_Name = "" Exit For '既にワークシートが登録されていれば抜け出す。 End If Next ws If ws_Name <> "" Then Worksheets.Add After:=Sheets(Worksheets.Count) '空のワークシートを最後尾に追加(登録されていないシート名を追加します。) ActiveSheet.Name = ws_Name '追加したワークシートの名前を変更します。 ws_Addname = ws_Addname + ws_Name & vbCrLf End If Next I If ws_Addname <> "" Then 'シートを追加したか調べます MsgBox "追加したシート名は、:" & vbCrLf & ws_Addname & "を追加しました。" Else MsgBox "シートは追加しませんでした。" '追加するシートが無い場合 End If End Sub ' |
(画面クリックして拡大)
EXCEL VBA ワークシートの使い方(特定条件に指定したシートを削除)
下記のサンプルプログラムは、ある特定条件(文字列)に指定したシートを削除するサンプルプログラムです。既存のワークシート名に「削除」の文字列が記入されている場合は、シートの削除対象になり該当するシートが削除されます。
【プログラムの説明】
①シートの削除対象にするには、シート名に【削除】の文字列を追記します。
②プログラム実行後、削除対象のシート名が有る場合は、対象のシート名がメッセージボックスで表示されます。
③【はい】・・・対象のシートが削除されます。 【いいえ】・・・シートの削除がキャンセルされます。(削除されません)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
' ''******** AKIRA55.COM ******* https://akira55.com/sheets_check/ ' Sub Worksheets_Check03() 'EXCEL VBA ワークシートの使い方(シートの存在チェック・条件によるシート削除) Dim ws As Worksheet Dim ws_Name, ws_Addname As String Dim Hantei As Integer ws_Name = "*[削除]*" 'シート名に【削除】の文字列はあるものが対象になります。 ws_Addname = "" For Each ws In Worksheets 'シートの削除対象をリスト化 If ws.Name Like ws_Name Then ws_Addname = ws_Addname + vbCrLf & ws.Name 'シート削除対象をリスト化します。 End If Next ws If ws_Addname = "" Then MsgBox "削除対象のシートは、有りませんでした" 'シート削除対象が1件もない場合 Else Hantei = MsgBox("削除対象のシート名:" & ws_Addname & "が有ります削除しますか?", vbYesNo) If Hantei = vbYes Then '「はい」・・削除 Application.DisplayAlerts = False 'シートを削除する際の警告メッセージ非表示(警告を無視) For Each ws In Worksheets If ws.Name Like ws_Name Then ws.Delete '削除対象のシートを削除します。 End If Next ws Application.DisplayAlerts = True 'シートを削除する際の警告メッセージの表示(既定値) Else MsgBox "シート削除をキャンセルしました。" End If End If End Sub ' |
(画面クリックして拡大)
EXCEL VBA ワークシートの使い方(別ブックからシート名を取得します・別シート名検索)
下記のサンプルプログラムは、別ブックからシート名を取得するサンプルプログラムです。ダイアログボックスからEXCELファイルを選択して、そのファイル内の全シート名を取得するサンプルプログラムです。シート単位で情報を管理している場合は、いちいちファイルを開いてシート名を確認するよりも、ファイルを選択するたけで、シート名を自動的に取得するので、とても便利です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
' ''******** AKIRA55.COM ******* https://akira55.com/sheets_check/ ' Sub Worksheets_Check04() 'EXCEL VBA ワークシートの使い方(他のブックからシート名を取得します。) Dim Wb As Workbook Dim Ws01, Ws02 As Worksheet Dim FilePath As String Dim I As Long FilePath = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") 'ダイアログボックスが表示されシート名を取得するEXCELファイルを選択します。 If FilePath = "False" Then 'ダイアログボックスのファイル選択をキャンセルした場合 MsgBox "処理を中断します" Exit Sub '処理を中断します End If Set Ws02 = Worksheets("マスター") I = 2 'シート(マスター)の2行目からシート名を転記するため Set Wb = Workbooks.Open(FileName:=FilePath, UpdateLinks:=0, ReadOnly:=True, IgnoreReadOnlyRecommended:=True) '選択したEXCELファイルを読み取り専用で開きます。 For Each Ws01 In Wb.Worksheets '選択したEXCELファイルの全シート分繰り返します。 Ws02.Cells(I, "A") = Ws01.Name 'シート名を取得して、シート名を転記します。 I = I + 1 '転記する行を+1し加算します。 Next Ws01 Wb.Close '選択したEXCELファイルを閉じます End Sub ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。