[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などのレンジ対象の関数によって、一律操作が可能になるよ」
妹「便利だねっ」
ディスカッション
コメント一覧
まだ、コメントがありません