【RangeとCellsでセルの位置を指定する】
1 新しいマクロをつくる
2 マクロをコピーして書きかえる
3 Rangeのセル番地を直接指定
4 Rangeのセル番地を定数で指定
5 Rangeのセル番地を変数で指定
6 Cellsの行番号と列番号を直接指定
7 Cellsの行番号と列番号を定数で指定
Rangeのセル番地を直接指定
パイさん
「Excel VBA/マクロのRangeのセル番地については三つの指定方法がありますが、
今回は、その一、Rangeオブジェクトの引数となるセル番地を直接指定する方法を紹介します。
ここで、既に、『新しいマクロをつくる』で紹介した、
セル位置をセル番地で指定するRangeオブジェクトを再び紹介します。
まずは、セル番地A1のセルの値に『直接指定A1』という文字列を代入してみましょう。
新しいマクロをつくって、マクロ名を『セル番地_直接指定』、
Rangeオブジェクトの引数となるセル番地を“A1”とし、
そのセルの値に『直接指定A1』を代入してみましょう。」
Sub セル番地_直接指定()
Range(“A1”).Value = "直接指定A1"
End Sub
ソンくん
「コードを書きました。」
パイさん
「それでは、マクロ『セル番地_直接指定』を実行してみましょう。」
ソンくん
「セルA1に、『直接指定A1』が、書きこまれました。」
パイさん
「次に、セル番地B2のセルに『直接指定B2』という文字列を代入してみましょう。」
Sub セル番地_直接指定()
Range(“B2”).Value = "直接指定B2"
End Sub
ソンくん
「コードを書きました。」
パイさん
「それでは、マクロ『セル番地_直接指定』を実行してみましょう。」
ソンくん
「セルB2に、『直接指定B2』が、書きこまれました。」
パイさん
「このように、Rangeの右側の引数『( )』の中には、セルの位置を示す値、
つまりセル番地を文字列で指定することになります。
試しに、セル番地を適当な値に書きかえて、マクロを実行して、
指定したセルの位置に文字が書きこまれることを確かめてみましょう。
(1) セルA2に『直接指定A2』を、
(2) セルB1に『直接指定B1』を、
(3) セルC3に『直接指定C3』を、代入してみましょう。
-
演習(1):マクロ『セル番地_直接指定』
セルA2の値に、『直接指定A2』という文字列を代入
-
Sub セル番地_直接指定()
Range(“A2”).Value = "直接指定A2"
End Sub
-
演習(2):マクロ『セル番地_直接指定』
セルB1の値に、『直接指定B1』という文字列を代入
-
Sub セル番地_直接指定()
Range(“B1”).Value = "直接指定B1"
End Sub
-
演習(3):マクロ『セル番地_直接指定』
セルC3の値に、『直接指定C3』という文字列を代入
-
Sub セル番地_直接指定()
Range(“C3”).Value = "直接指定C3"
End Sub
Rangeのセル番地については三つの指定方法がありますが、
今回は、その一、Rangeオブジェクトの引数となるセル番地を直接指定する方法を紹介しました。
でも、セル番地を指定するとき、Rangeオブジェクトの引数:セル番地を直接記述するという手法は、
マジックナンバーと呼ばれるやり方で、プログラムのメンテナンス上あまりお勧めできません。
では、セル番地を直接指定することなく、セル番地を間接的に指定するにはどうしたらよいのでしょうか。
これについては、次回『Rangeのセル番地を定数で指定』で紹介します。」