不連続な範囲を選択(失敗談)
不連続な範囲を、お手軽に選択したくなった。
例えば、A1とC3を選択したい場合。
その場合、このような書き方が可能だ。
ちなみに、↓ こう書くと、
Range("A1","C3").Select
これは選択範囲の左上と右下を指しており、この間の全セルが選択されてしまう。
ところで、先程の ↓ この書き方、限界はあるのだろうか。
Range("A1,C3").Select
そこで、A列のセルを一つずつ選択して、どこが限界か試してみた。
Range("A1,A2").Select Range("A1,A2,A3").Select Range("A1,A2,A3,A4").Select
手作業で一つずつ試すのは大変なので、実際はテスト用サブプロシージャを作成。
Sub test() ' 座標格納のための配列。 Dim arr As Variant arr = Array() ' 上記配列を用いて、不連続な範囲をセットするための ' Rangeオブジェクト。 Dim myRng As Range Dim i As Long: i = 1 On Error Resume Next Do While Err.Number = 0 ReDim Preserve arr(UBound(arr) + 1) arr(UBound(arr)) = "A" & i Set myRng = Range(Join(arr, ",")) myRng.Select i = i + 1 Loop End Sub
すると、割と早めに限界が訪れた。
そうか、そこが限界なのか。ならば、二つずつの場合はどうか。
arr(UBound(arr)) = "A" & i & ":A" & i + 1
66×2=132で、A132まで選択されるのかな?と思っていた。
しかし結果は、同じだった。
では、三つずつの場合は?
今度は増えた。???。そして気づいた。選択できるセルの数に限界があるのではなく、↓ の〇〇〇に許される文字数が限界だったってことに。
Range(〇〇〇)
その後試した限り、255文字が上限らしい。以後、気を付けます。
参考まで。