Rangeの範囲指定

中級VBA

Rangeの範囲指定

 ExcelにおいてRangeは非常に重要なオブジェクトと言えるでしょう。扱うプロパティも多く、範囲指定の仕方も様々です。

 また、Cellsも同じような役割を果たしていますので、使い分けなども把握しておくとプログラムが見やすくなるでしょう。
 ここでは、セルの範囲指定を中心にRangeを見ていきます。

単独のセル範囲指定

 単独のセルを指定する時は、以下のようにします。

 Range(“A1”) 

 ””で囲まれているので文字列として指定しているのがわかります。
 この文字列には規定があります。

 ・列、行の順番で書く
 ・列はアルファベットの大文字
 ・行は数値
 ・半角英数字を使う(全角は使用しない)

 
 上記のようにオブジェクト単体で書くことはありません。
 以下のようにオブジェクトのメソッドやプロパティを指定します。 

    Range("A1").Select
    
    Dim v
    v = Range("A1")
    Range("A1") = 1

 文字列は変数で置き換えて合成してもOKです。

    Dim l As Long
    l = 3
    Range("C" & l).Select

複数のセル範囲指定

 Rangeでは複数の範囲指定も可能です。用途によって書き方が決まっています。

1つの矩形範囲

 Range("A1:B3").Select

 このように「」(コロン)で指定すると、一塊の矩形範囲を指定できます。

また、以下のように始点と終点を指定してカンマで区切る事でも範囲指定できます。

 Range("A1", "B3").Select

離れた範囲指定

 一つの文字列内でカンマで区切ると離れたセルを指定できます。
  ※上の例と混同しないようにしましょう。

    Range("A1,B3").Select

 先程と似ていますが、今度は2つのセルを選択しています。

 2つの矩形を選択するには次のように書けます。

    Range("A1:B2,B4:D5").Select

列指定

 列全体を指定したい場合は、以下のように書きます。

    Range("B:C").Select

行指定

 行全体を指定したい場合は、以下のように書きます。

    Range("2:3").Select

名前定義での指定

 Excelでは、セルの範囲には任意の名前を付けて管理する事ができます。
 Excelメニューの「数式」>「名前の定義」をクリックすると、以下のように特定の範囲に名前を付けて管理できます。

 この名前定義で定義された部分を指定するには以下のように書きます。

    Range("名前1").Select

セルの範囲を巡回

 Rangeで指定された範囲は、For Each In で巡回させることができます。
 使用する場合は、どのような順番で巡回するのか確認しておいた方が良いでしょう。

Sub testRangeLoop()
    
    Dim myCells As Range
    Dim c
    Dim i As Long
    
    Set myCells = Range("A1:C5")
    i = 1
    For Each c In myCells
        c.Value = i
        i = i + 1
    Next c

End Sub

 Rangeなど、オブジェクトの代入では Set を付けますので忘れないようにしましょう。
 このコードを実行すると以下のような結果が得られます。

 Z字を描くように、行方向のあと列方向に進んでいますね。
 今度は、選択方法を以下のように変えてみましょう。

Set myCells = Range("A1:A5,B1:B5,C1:C5")

 今度は列方向に進んだ後で行方向に進んでいます。
 このように選択の仕方で順序が変わりますので覚えておくと役に立つかもしれません。

タイトルとURLをコピーしました