Categories: VBA基礎

EXCEL VBA RangeとCellsの使い方

EXCEL VBA Range / Cellsの使い方

 

●はじめに
EXCEL VBAを利用する上で一番使うのが、この「Range」と「Cells」になります。このRangeとCellsを使ってEXCELのセルに文字や数値などを記入したり、セルのデータを取り出したりします。RangeもCellsも使い方ほぼ一緒です。慣れないうちは、Rangeを利用して、ある程度なれてきたらCellsを使うようにした方がよいと思います。それは、セル位置を変数を使って移動するときは、Cellsの方が利用しやすいからです。ここではRangeとCellsの使い方を重点的に説明いたします。

 

●書式の説明(Range/Cellsの使い方)

●Rangeの使い方 Range(“セル位置”)
・セル位置 例:A1 B2

●Cellsの使い方 Cells(縦番号,横番号)
・セル位置を位置番号にすると”A1”は、縦1横1 =Cells(1,1)
・セル位置”E3”の場合は、Cells(3,5) または、Cells(3,”E”)でも可能です。数値だけでは、なく列記号でも可能です。下記に、RangeとCellsの使用例を記入していますので、参考にして下さい

 

実行したい内容 Range Cells
セルA1に”Hello”を代入する Range(“A1”) = “Hello” Cells(1,1) = “Hello”
セルB2に”Hello”を代入する Range(“B2”) = “Hello” Cells(2,2)  = “Hello”
セルA1をA2に代入する。 Range(”A2″) = Range(“A1”) Cells(2,1) = Cells(1,1)
Rangeの記述参照範囲記述内容
Range("A1")「A1」セル単一セルの指定
Range("A1:E5")「A1~E5」セルセル範囲の指定
Range("A1,B2,C3")「A1」「B2」「C3」のセル複数の単一セルの指定
Range("A1:B5,C2:D6")「A1~B5」と「C2~D6」複数のセル範囲指定
Range("A:E")「A~E」列セル列の範囲指定
Range("1:5")「1~5」行セル行の範囲指定

 

Cellsの記述参照範囲記述内容
Cells(1,"A")「A1」セル単一セルの指定(列を英字)
Cells(1,1)「A1」セル単一セルの指定(列を数字)
Range(Cells(1,"A"),Cells(5,"B"))「A1~B5」セルの範囲指定(列を英字)
Range(Cells(1,1),Cells(5,2))「A1~B5」セルの範囲指定(列を数字)
Cells全セル全てのセルを指定

 

●プログラム説明 (サンプルプログラム①)
続いて、実際にプログラムで入力してみましょう。下記のプログラムは「C1」のデータを「A1」へ値を書き込むのと、「C2」のデータを「C1」へ値を書き込みむプログラムになります。Rangeの記述方法とCellsの方法2パターンで表しています。

 

 
 Sub Rangetest01()
 
    Range("A1") = Range("C1")
                                  'セルC1⇒A1へ値を書き込みます。①
    
    Cells(2, "A") = Cells(2, "C")
                                  'セルC2⇒A2へ値を書き込みます。②
    
    '①は、Rangeの場合です、②は、Cellsの場合です。とちらも同じ処理行います。
 
 End Sub
●実行結果
C列の値をA列へ値を書き込みました。

 

●実行前 ※C列にRangeとCellsが記入されています。(クリックして拡大)

 

●実行後 ※C列に記入されているRangeとCellsをA列に書き込みました。(クリックして拡大)

 

 

●プログラム説明 (サンプルプログラム②)
続いて、複数のセルに対して値を書き込む方法のプログラムです。複数セルを選択する場合は、「.Value」を付けます。「.Value」が無いと正しく値を書き込む事が出来ません。

 

  
 Sub Rangetest02()
 
    Range("A4:A5").Value = Range("C4:C5").Value
                                                  'セルC4~C5⇒A4~A5へ値を書き込みます。①
    
    Range(Cells(7, "A"), Cells(8, "A")).Value = Range(Cells(7, "C"), Cells(8, "C")).Value
    
                                                  'セルC7~C8⇒A7~A8へ値を書き込みます。②
                                                  
    '①は、Rangeの場合です、②は、Range+Cellsの組み合わせ場合です。とちらも同じ処理行います。
                           
    'Cellsの場合は、複数セルを選択できないので、②の様にRangeを組み合わせます。
 
 
 End Sub

 

●実行結果
C列の値をA列へ値を書き込みました。今回は、複数セルを指定して別のセルに書き込んでいます。

 

●実行前 ※C列にRangeとCellsが記入されています。(クリックして拡大)

 

●実行後 ※C列の内容をA列に書き込みました。(クリックして拡大)

 

 

●プログラム説明 (サンプルプログラム③)
続いて、For Next を使ってC1~C10のデータをA1~A10へ順番に値を書き込みます。

 

 
Sub RangeTest03()

    Dim I As Integer 'I 変数数値を定義
     
    For I = 1 To 10  'C1~C10のデータをA1~A10へ順番に値を書き込みます。
    
        Range("A" & I) = Range("C" & I)  'セルC ⇒ セルA は値を書き込みます。
    
    Next I
    
End Sub

 

●実行結果
ForNextを使いC列(C1~C7)の内容をA列(A1~A7)に順番に書き込みました。

 

●実行前 ※C列の内容をA列に順番に書き込みます。(クリックして拡大)

 

●実行後 ※C列の内容(月曜日~日曜日)を順番にA列に書き込みました。 (クリックして拡大)

 

最後まで、ご覧いただきまして誠に有難うございました。
RangeとCellsは、EXCEL VBAを利用する場合に一番利用しますので、早めに理解しましょう!
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA