4、VBAによるマクロの作成(基本編)
4−1、入力
代入
セルや、変数(基本編4−2参照)に文字や値を入力することを代入といいます。代入には直接入力したり、計算結果の入った変数から入力したりと様々な方法があります。
セルに文字や値を代入する
例1)
「Sheet1」のB1に「国語」、C1に「数学」、D1に「英語」、A2に「山田」、B2に「69」、C2に「94」、D2に「42」をそれぞれ入力します。Sub Example1()
Worksheets("Sheet1").Select
Range("B1")="国語"
Range("C1")="数学"
Range("D1")="英語"
Range("A2")="山田"
Range("B2")=69
Range("C2")=94
Range("D2")=42
End Sub記述後、「マクロの実行」から「Example1」を実行してください。
※この後のExampleマクロは一連のつながりがあるので、続けて練習する方はこのマクロを保存しておくことをお勧めします。
【このコードの解説】
- まずどのシートに入力するのかを選択しなければなりません。
上の例では「Sheet1」に入力するので、まず「Sheet1」を選択するコードを書きます。Worksheets("Sheet1").Select
このコードの構成は、主に3つの部分に分けられます。
「Worksheets().」の部分ではこれから選択しようとしているものが「シートである」ということを宣言しています。
「"Sheet1"」の部分では、選択するシート名を指定しています。シート名そのものを入力する場合はこの例ようにダブルクォーテーションが必要です。
「Select」の部分は「選択しなさい」という命令を表わしています。
- 次にどのセルに何を入力するのかを指示します。
Range("B1")="国語"
このコードの構成も主に3つの部分に分けられます。
「Range()」の部分は入力先のオブジェクトを指定しています。「Range」とは、「範囲」を意味しますが「セル」と解釈してもOKです。
「"B1"」の部分は「Range」の表わす範囲(セル)が実際どこなのかを指定します。
「"国語"」の部分は指定したセルに入力する文字「国語」を意味します。文字を入力する場合はダブルクォーテーションで囲みます。数字を入力する場合は必要ありません。この例からも分かるように、代入にはイコール「=」を使います。また、入力先を左辺に、入力する文字(値)を右辺に書きます。
+α講座
【シートの選択】
- シート名を変更した場合は、シート名の部分にその名前をそのまま記述します。例えばシート名を「成績表」に変更した場合は以下のように記述します。
Worksheets("成績表").Select
- 「Select」の他に、シートを選択する命令を次のように記述することもできます。
Worksheets("Sheet1").Activate
【セルの選択】
- シートと同じようにセルも選択することができます。
「B3」を選択する場合は次のように記述します。Range("B3").Select
- 上の選択方法は「A1形式」による記述で、もう一つ「R1C1形式」による記述の仕方があります。こちらも紹介しておきましょう。
- 「B3」セルは、シート上では3行目の2列目にあるセルのことですよね。「R1C1形式」とは、この行数、列数でセルを指定する形式のことで、この形式を用いると、「B3」セルを選択する命令文は以下のようになります。
Cells(3,2).Select
- この場合「Range」ではなく「Cells」に変わり、選択したいセルの指定は(行数,列数)の形になります。必ず行→列の順に書き、間のカンマ「,」を忘れないでください。
- ついでに連続する複数のセル範囲を選択したい場合の説明をします。
- 「B3」セルから「B6」セルの範囲(下図参照)を選択する場合。
◎「A1形式」の場合
Range("B3:B6").Select◎「R1C1形式」の場合
Range(Cells(3,2),Cells(6,2)).Select
- 「B3」セルから「C6」セルの範囲(下図参照)を選択する場合。
◎「A1形式」の場合
Range("B3:C6").Select◎「R1C1形式」の場合
Range(Cells(3,2),Cells(6,3)).Select
- 複数のセルを指定したい場合は、上の2つの例ように範囲のはじめのセルとおわりのセルがキーになります。
「A1形式」の場合ははじめとおわりのセルをコロン「:」でつなげて選択します。
「R1C1形式」の場合ははじめとおわりのセルをカンマ「,」でつなぎ、さらにそれを「Range」でくくって選択します。この場合、かっこがたくさん必要になるので注意して下さい(下記参照)。
Range(Cells(3,2),Cells(6,3)).Select