Categories: VBA基礎

EXCEL VBA ワークシートのアクティブ・選択・指定・グループ化(追加選択・複数選択)

 

 

EXCEL VBA ワークシートのアクティブ・選択・指定・グループ化(追加選択・複数選択)

 

 

●はじめに

今回は、ワークシートの取り扱い方法。アクティブシート・シートの選択・シートの追加選択・シートのグループ化の利用方法を説明いたします。EXCEL VBAでプログラムを作成するにあたり、特にワークシートの作業は、頻繁に利用します。その中のシートのグループ化は、複写処理などが一括に出来るので覚えるとプログラム作成の幅が広がります。それでは、3つのサンプルプログラムを交えて順番に説明いたします。

 

 

●書式の説明 (Worksheetオブジェクト.Active /  Worksheetオブジェクト.Select(Replace))

【指定するワークシートをアクティブ化します】

● Worksheetオブジェクト.Active

●『使用例』
Worksheets(“Sheet1”).Activate    ’・・・ワークシート「Sheet1」をアクティブ化します。

【ワークシートを選択します】

● Worksheetオブジェクト.Select(Replace)

●『使用例①』

Worksheets(“Sheet1”).Select     ’・・・ワークシート「Sheet1」を選択します。

●『使用例②』

Worksheets(“Sheet1”).Select               ‘・・・ワークシート「Sheet1」を選択します。
Worksheets(“Sheet2”).Select False    ‘・・・ワークシート「Sheet2」を追加選択します。

★【ワークシートにおけるActiveメゾットとSelectメゾットとは】

 

 

 

実行ボタンでシートを切り替える(Select:切替・選択)

 

 

●プログラム説明  (サンプル①)

下記のサンプルは、シートに実行ボタンを設置して、実行ボタン毎に指定したシートを切替えるサンプルプログラムです。

【作成手順】
①ワークシートの「TOP」に各支店の実行ボタンを作成します。
②作成した実行ボタンに「実行マクロ」を登録します。

【実行ボタンの設置方法は、下記URLを参照して下さい】

【プログラム実行条件】
・ワークシート名を「TOP」・「東京支店」・「大阪支店」・「福岡支店」・「仙台支店」にする。

 

 

'
''******** AKIRA55.COM ******* https://akira55.com/sheets_select/
'-------------------------------------------------------------------------
Sub Sheets_Select_Tokyo()

    Worksheets("東京支店").Select
    
    MsgBox "東京支店のシートを選択しました。"

    Worksheets("TOP").Select

End Sub
'-------------------------------------------------------------------------
Sub Sheets_Select_Osaka()

    Worksheets("大阪支店").Select
    
    MsgBox "大阪支店のシートを選択しました。"

    Worksheets("TOP").Select

End Sub
'-------------------------------------------------------------------------
Sub Sheets_Select_Fukuoka()

    Worksheets("福岡支店").Select
    
    MsgBox "福岡支店のシートを選択しました。"

    Worksheets("TOP").Select

End Sub
'-------------------------------------------------------------------------
Sub Sheets_Select_Sendai()

    Worksheets("仙台支店").Select
    
    MsgBox "仙台支店のシートを選択しました。"

    Worksheets("TOP").Select

End Sub
'-------------------------------------------------------------------------

 

 

●実行前~実行後 ※ワークシート「TOP」に、各支店のワークシートに切替えるボタンが設定されているので、ボタンをクリックして、各シート「東京支店」・「大阪支店」・「福岡支店」・「仙台支店」に切替えます。
(※各支店に切替後に、TOPに戻ります)
(画面クリックして拡大)

 

 

 

 

ワークシートを複数選択してプリンターへ出力します。(複数シート選択・シートを纏める・ワークシートのグループ化)

 

 

●プログラム説明 (サンプル②)  【ワークシートのグループ化】

下記のサンプルプログラムは、ワークシートを複数選択してプリンターへ出力するサンプルプログラムです。

【実行手順】
①メッセージボックスが表示されて「各支店のワークシートを複数選択して出力しますか?」のメッセージが表示されます。
②「Yes」の場合、ワークシート「東京支店”, “大阪支店”, “福岡支店”, “仙台支店”」を選択します。
③複数選択したワークシートをプリンターへ出力します。(プレビュー画面表示)

【プログラム実行条件】
●ワークシート名を”東京支店”, “大阪支店”, “福岡支店”, “仙台支店”にする。

 

 

'
'******** AKIRA55.COM ******* https://akira55.com/sheets_select/
'

Sub Sheets_Select02()   'ワークシート複数選択してを出力します。
                        'ワークシートの東京支店~仙台支店まで複数選択します。

    Dim PRN As Integer
    Dim Ws As Variant

    
    PRN = MsgBox("各支店のワークシートを複数選択して出力しますか?", vbYesNo)

    If PRN = vbYes Then
            Ws = (Array("東京支店", "大阪支店", "福岡支店", "仙台支店"))
            'ワークシート("東京支店", "大阪支店", "福岡支店", "仙台支店"をwsに纏めます))
            
            Sheets(Ws).PrintOut Preview:=True
            '複数選択したワークシートをプリンターへ出力(プレビュー画面表示)
        Else
            MsgBox "NOを選択しました。処理を中断します。"
    
    End If
    
End Sub
'

 

 

●実行前~実行後 ※プログラム後、メッセージボックスが表示され、複数選択したワークシート「東京支店”, “大阪支店”, “福岡支店”, “仙台支店”」を纏めてプリンターへ出力されました。
(画面クリックして拡大)

 

 

雛形のワークシートをグループ化で他シートへ複写する
(書式のコピー・一括複写:FillAcrossSheets メゾット)

 

 

●プログラム説明 (サンプル③)  FillAcrossSheets メゾット

下記のサンプルプログラムは、ブック内のワークシートに雛形のシートがあり、この雛形シートを別のシートへグループ化で一括に複写するサンプルプログラムです。今回は、FillAcrossSheets メゾットを利用して簡単に、他のワークシートへ複写出来るようにプログラムを作成しております。

【実行手順】
①メッセージボックスが表示されて「”雛形の書式をシートを他のシートへ複写しますか?”」のメッセージが表示されます。
②「Yes」の場合、ワークシートをグループ化「”雛形”, “2020年度”, “2021年度”, “2022年度”」
③雛形シート:セル(A2:G13)をグループ化したシートへ一括複写を行います。

【プログラム実行条件】
●複写元:ワークシート名を”雛形”にする。
●複写先:ワークシート名を”2020年度”, “2021年度”, “2022年度”にする。

 

'
'******** AKIRA55.COM ******* https://akira55.com/sheets_select/
'

Sub Sheets_Select03() ' ワークシートをグループ化したシートに雛形書式を複写する。


    Dim Ws As Variant
    Dim Sen As Integer
    
    Sen = MsgBox("雛形のシートを他のシートへ複写しますか?", vbYesNo)
    
    If Sen = vbYes Then
            Ws = (Array("雛形", "2020年度", "2021年度", "2022年度"))
             'ワークシートを(雛形", "2020年度", "2021年度", "2022年度)をwsに纏めます))
            Sheets(Ws).FillAcrossSheets Range:=Worksheets("雛形").Range("A2:G13")
            'グループ化したシートにシート(雛形)のセル「A2:G13」を複写します。
        Else
            MsgBox "キャンセルしました。"
    
    End If
   
End Sub
’

 

 

●実行前~実行後 ※プログラム実行後、「雛形のシートを他のシートへ複写しますか?」のメッセージが表示されます。「はい」クリックしてグループ化したシートに複写します。
(画面クリックして拡大)

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA