初心者がVBAで初めてコーディングするのはなかなかハードルが高いものです。
しかしセルの値を読み取ったり、セルに値をセットしたりできるようになったら、あとはセルの指定さえできれば理屈上、エクセルのセルをプログラムでインプット、アウトプットの基本的な処理ができることになります。
VBAでセルを指定する方法は4種類
VBAでセルを指定する方法は4種類あります。VBEのイミディエイトウィンドウで試してみると実験をしやすいでしょう。
range
range(“A1”)ならA1セル。人間には一番イメージがしやすいと思います。
その反面、”B1″, “C1″など、連番でも文字順でもない文字列を指定する必要があるので、プログラム的には処理をしにくい難点があります。
range("A1").Value = "A1セル"
後述するoffsetを使うと
range(“A1”).offset(1,10) 「A1セルから下に1行、右に10行ズレた場所」などと数字で扱うことができます。こうなれば次に出てくるcells同様、プログラムと相性が良くなります。
cells
プログラムで有用なのはcellsです。cells(“2, 1”)なら2行1列目=A2セル、と人間には変換が必要ですが、プログラム的には「cells(“x, 1”) を x=1から10まで実行」のように数字を使って制御しやすいからです。
cells(1,2).value = "1行2列目"
cells(2,2).value = "2行2列目"
cells(3,2).value = "3行2列目"
cells(4,2).value = "4行2列目"
cells(5,2).value = "5行2列目"
selection
「エクセルのカーソルでアクティブになっているセル」を指します。セルを移動させなくても処理できるVBAのメリットをなくすので、プログラムで使用するのはお勧めできません。
マクロ記録で作成されたプログラムには多用されています。
selection.value = "選択しているセル"
offset
range(“A1”).offset(1,2) 「A1セルから下に1行、右に2行ズレた場所」などと数字で扱うことができます。もちろんcellsやselectionなどと一緒に使うこともできます。
プログラムと相性がイマイチだったrangeメソッドも、これと併記することで数字で連続処理ができてプログラムと相性が良くなります。
range("A1").offset(1,2).Value = "A1セルから1行2列オフセットしたセル"
まとめ
VBAでエクセルのセルを指定する方法(プロパティ)は4種類、これを知っておけば初心者でもセルの指定ができるようになります。
- range
- cells
- selection
- offset
もちろん値をセルにセットするだけでなく、セルから値を取得することもできます。
脱初心者のために
イミディエイトウィンドウに記述した内容をひとまとめにし、プログラム名を付ければVBAマクロの出来上がりです。エクセルでセルの値を何度削除しても何度でも同じ入力を再現できます。
具体的には、sub ~ end subで囲みます。
Sub 初めてのVBA()
Range("A1").Value = "A1セル"
Cells(1, 2).Value = "1行2列目"
Cells(2, 2).Value = "2行2列目"
Cells(3, 2).Value = "3行2列目"
Cells(4, 2).Value = "4行2列目"
Cells(5, 2).Value = "5行2列目"
Range("A1").Offset(1, 2).Value = "A1セルから1行2列オフセットしたセル"
Selection.Value = "選択しているセル"
range("D1").Interior.Color = 255
End Sub
コメント