[VBA]複数処理するApplication.Union関数を使おう!

妹「お兄ちゃん、複数の選択範囲を持つVBAってどうやって作るの?」

兄「複数の選択範囲を持つこと自体が少ないよ。通常なら、その中でやりたい処理も書くんだけど、その場合は関数化してレンジを渡すようにするね。選択だけ?」

妹「うん、選択だけしたいんだよね」

兄「じゃあこうだね……」

妹「複数選択できるんだ。コード解説よろしくね」

  Range("A1:F9").Select
  Call Application.Union(Selection, Sheet1.Range("A11:F19")).Select

兄「最初にRangeで選択する。次の行、Application.Union(Selection,Range(“”)).Select。これで選択されていた行を含めて、追加レンジを指定したエリアが取得できる。Application.Unionを使って複数セルを定義して、そこを.Selectしたんだ」

妹「全部書かないといけないの?」

兄「Rangeの指定文字列は文字列加工でいけるよ。例えば……」

'youwaka.net
Sub Macro1()
'youwaka.net
    Dim sbSel As String
    sbSel = ""
    Range("A2").Select
    
'5で5つのエリア。その数値数分のエリアを選択
    sbSel = "A2:N9"
    Range(sbSel).Select
    numTable = 5
    For i = 1 To numTable - 1
        sbSel = "A" & 2 + i * 10 & ":N" & 9 + i * 10
        Call Application.Union(Selection, Sheet1.Range(sbSel)).Select
    Next i

End Sub

兄「こうすれば、指定したテーブルが選択されるようになるよ。一括で罫線したりマージする時に使うかな。Application.Unionで取った所は、.Selectから.Mergeなどのレンジ対象の関数によって、一律操作が可能になるよ」

妹「便利だねっ」