Excel は使ったことがあるけど Excel VBA(マクロ)は未経験という方に向けて、最初の一歩を手助けしたいと考えています。
Excel でやることには、まず間違いなく「セル」が関わります。
VBA でのプログラミングによってできることも、何らかのセルの操作になるわけですね。
さて、今日は「Excel VBA におけるセルの指定の仕方」についてお話しします!
1、Excel シート上でのセルの指定
まずはご存知の Excel シートでのセルの指定をざっと振り返っておきましょう!
さて、Excel では行・列の組み合わせでセルを指定することはご存知だと思います。
●行番号は数字
●列番号はアルファベット
での表記になっており、行番号が 5、列番号が C であれば「C5」となります。
Excel シート上でセルを指定する場合には、上記のように記述します。
例えば、セル「C6」に「C5」と同じ内容を表示させたい場合、「C6」に「=C5」と記述します。
関数を使う場合も同様にセルの指定をします。
SUM 関数はこちらを参考にして頂ければ ↓
2、Excel VBA におけるセルの指定
次に本題である Excel VBA でのセルの指定する方法についてお話ししますね!
大きく分けて、Cells を使う方法と Range を使う方法があります。
指定できるセルの範囲に違いがあります。
●Range・・・1つまたは、複数のセルを指定
Cells を使う場合
1つのセルを指定するために Cells が使えます。
①行番号、列番号ともに数字で指定する方法
よく使うのは、次のように数字の行番号、列番号でセルを指定する方法です。
行番号はシートの数字をそのまま使い、列番号のアルファベットを1、2、3、、、と順番に数字に置き換えて考えます。
例えば、セル「C5」であれば「Cells(5, 3)」と記述して指定します。
この方法でセルを指定して、「C5」に数字の「100」を表示させたいと思います。
VBA コードは以下のようになります。
プロシージャ名(マクロ名)は「Cell_Shitei」としますね。
1 2 3 4 5 |
Sub Cell_Shitei() Cells(5, 3) = 100 End Sub |
②行番号は数字、列番号はアルファベットで指定する方法
さて、もう1つ次のように行番号は数字、列番号はアルファベットで指定する方法もあります。
セル「C5」であれば「Cells(5, “C”)」と記述します。
この方法でセルを指定して、「C5」に数字の「100」を表示させたいと思います。
VBA コードは以下のようになります。
1 2 3 4 5 |
Sub Cell_Shitei() Cells(5, "C") = 100 End Sub |
Range を使う場合
さて、もう1つ Range を使う方法もあります。
Range を使えば1つのセルを指定することもできますし、複数のセルを指定することもできます。
1つのセルを指定する方法
1つのセルを指定する場合、次のように記述します。
セル番号は、Excel シート上でのセルの指定と同じ書き方をします。
例えばセル「C5」であれば「Range(“C5”)」と記述します。
セル番号を “” で囲うことを忘れないようにしましょう。
この方法でセルを指定して、「C5」に数字の「100」を表示させたいと思います。
VBA コードは以下のようになります。
1 2 3 4 5 |
Sub Cell_Shitei() Range("C5") = 100 End Sub |
複数のセルを指定する方法 ①Excel シート上でのセルの指定と同じ書き方をする場合
次に複数のセルを指定する方法についてお話しします。
2つ方法がありそのうちの1つ目です。
セル番号1とセル番号2で囲まれる範囲のすべてのセルを指定する場合、次のように記述します。
・「セル番号1」は左上のセル
・「セル番号2」は右下のセル
のことを意味します。
例えばセル番号1 が「C5」、セル番号2が「E8」だとすると「Range(“C5:E8“)」と記述します。
セル番号を “” で囲うことを忘れないようにしましょう。
これでこの範囲(上の図の赤枠)内のすべてのセルを指定したことになります。
この方法でセルを指定して、「C5」と「E8」で囲まれるすべてのセルに「100」と表示させたいと思います。
VBA コードは以下のようになります。
1 2 3 4 5 |
Sub Cell_Shitei() Range("C5:E8") = 100 End Sub |
これを実行すると次のように、C5 と E8 で囲まれるすべてのセルに 100 と表示されることが確認できます。
複数のセルを指定する方法 ②セルの表記で Cells を使う場合
次に複数のセルを指定する方法の2つ目についてお話しします。
最初に 1つのセルを指定する方法としてお話ししました Cells を使います。
次の2つのセルで囲まれるすべてのセルを指定するものとします。
・左上のセル Cells(行番号1, 列番号1)
・右下のセル Cells(行番号2, 列番号2)
次のように記述します。
Range(Cells(行番号1, 列番号1):Cells(行番号2, 列番号2))
この方法でセルを指定して、「C5」と「E8」で囲まれるすべてのセルに「100」と表示させたいと思います。
VBA コードは以下のようになります。
1 2 3 4 5 |
Sub Cell_Shitei() Range(Cells(5, 3), Cells(8, 5)) = 100 End Sub |
これを実行すると先と同様に、C5 と E8 で囲まれるすべてのセルに 100 と表示されることが確認できます。
3、どの方法を使えば良いか
さて、セルを指定する方法をいくつか紹介しましたが、自分がどの方法をよく使うかお話ししておきますね!
1つのセルを指定する場合
1つのセルを指定する場合として、セル「C5」であれば次の方法があることをお話しさせて頂きました。
Cells(5, 3)
Cells(5, “C”)
Range(“C5”)
私が、一番よく使うのは Cells(5, 3) と指定する方法です。
なぜかと言えば、色々と応用がきくからです。
後々、行番号や列番号を変数(i、j など)で指定したい場合が出てきますが、そのようなときはこの方法の方が使いやすいと考えます。
例えば、行番号を変数にして Cells(i, 3) のように書きたいケースも出てくるんですね。
すみません、現段階でまだそこまで学習が進んでない方も多いかと思います。とりあえず感覚的に理解頂ければと思います。
(変数ついての詳細はこの記事では割愛します)。
複数のセルを指定する
複数のセルを指定する場合として、セル「C5」と「E8」で囲まれる範囲内のセルであれば、次の方法があることをお話しさせて頂きました。
Range(“C5:E8”)
Range(Cells(5, 3), Cells(8, 5))
自分の場合、そもそも複数のセルを指定する場合はそもそも使う頻度が少ないです。
使うときは「Range(“C5:E8”)」と指定することの方が多いですかね。
ただ、指定する範囲を動かしたい場合などはやはり変数(i、j など)を使うので、そういうケースでは Cells を使う方を採用します。
4、まとめ
Excel VBA におけるセルの指定の仕方についてお話ししました。
色々な方法がありますので、まずはそれぞれの方法を試して頂きたいです。
今日書いた VBA コードをエディタにコピペして数字が表示されることを試して下さい。
セルの指定は基本の基本です。まずはどのようにして指定するか感覚を身につけましょう!
なお、以下の記事 ↓ も初心者向けに書いたものですので参考にして頂ければと思います
編集後記
昨日(10/11)は終日税務調査の立ち合いでした。
最近メルマガはじめました。
と言ってもまだ配信はしておらず、登録者数がある程度増えたら配信開始する予定です。
よろしければご登録下さい(^^)
素人向けに会計・税務について、週一程度の配信を予定しております。