pgbigorokuのブログ

プログラムの再利用できそうなコードをアップ

EXCEL VBA 複数シートを選択する

ワークシートを複数したい場合に、配列でセレクトってRedimし直しで煩雑なコードになりませんか?
今回は、コレクションを利用してシンプルなコードで指定できるようにしました!

サンプル
「Sheet1とSheet3とSheet5を選択する。」

Sub test()
    Dim cllTemp As New Collection
    cllTemp.Add "Sheet5"
    cllTemp.Add "Sheet3"
    cllTemp.Add "Sheet1"
    ni複数シート選択 ActiveWorkbook, cllTemp
End Sub

'   機能   :  複数シートを選択する。
'
'    返り値  :     -
'
'    引き数  :    ByRef wkbTarget As Workbook 対象のワークブック
'                   ByRef pcll印刷シート名 As Collection    選択するワークシート名
'    機能説明 :    存在しないシート名を指定した場合、エラーになります。
'
'    備考   :     -
'
'    この関数のURL  :https://pgbigoroku.hatenablog.com/entry/2022/08/22/162205
'
'    バージョン  :2022/8/21
'
Public Sub ni複数シート選択(ByRef wkbTarget As Workbook, ByRef pcll印刷シート名 As Collection)
    Dim arySheetName() As String
    Dim intFor As Integer
    ReDim arySheetName(0 To pcll印刷シート名.Count - 1)
    For intFor = 0 To pcll印刷シート名.Count - 1
        arySheetName(intFor) = pcll印刷シート名(intFor + 1)
    Next
    wkbTarget.Sheets(arySheetName).Select
End Sub