目次
Excel VBAで1つのセルを参照するリテラル表記まとめ【完全解説】
1つのセルを参照するにはWorksheetオブジェクトのRangeプロパティまたはCellsプロパティを使用します。
Range("B3")
Cells(3, 2)
Cells(3, "B")
Excel VBAでは、1つのセルを指定する方法が複数存在します。
本記事では「直接指定(リテラル表記)」に絞って、実務で使う書き方をわかりやすく解説します。
1. A1形式で指定する方法(最も一般的
もっともよく使われるのがA1形式です。
Range("A1")
解説
- Excelと同じ感覚で書けるため可読性が高い
- マクロ初心者にも理解しやすい
- 実務で最も使用頻度が高い
シートを明示する場合
Worksheets("Sheet1").Range("A1")
シートを省略するとActiveSheetが対象になります。
バグ防止のため、実務ではシートを明示するのが安全です。
2. R1C1形式で指定する方法
行番号と列番号で指定する形式です。
Range("R1C1")
解説
- R = Row(行)
- C = Column(列)
- 数式をR1C1形式で扱う場合に便利
通常の業務ではA1形式のほうが使いやすいです。
3. Cellsプロパティで指定する方法
行番号・列番号を数値で指定します。
Cells(1, 1)
解説
- 第1引数:行番号
- 第2引数:列番号
- ループ処理と相性が良い
シートを明示
Worksheets("Sheet1").Cells(1, 1)
実務ポイント
繰り返し処理ではこちらの方がよく使われます。
6. RangeとCellsを組み合わせる方法
Range(Cells(1,1), Cells(1,1))
解説
開始セルと終了セルを同じにすれば1セルになります。
範囲指定の応用形です。
【まとめ】直接リテラル指定といえる書き方
Range("A1")
Range("R1C1")
Cells(1,1)
[A1]
Evaluate("A1")
実務でのおすすめ順位
- ⭐⭐⭐⭐⭐
Worksheets("Sheet1").Cells(1,1) - ⭐⭐⭐⭐⭐
Range("A1") - ⭐⭐⭐
Cells(1,1) - ⭐⭐
[A1]
間接参照(厳密にはリテラルではない)
Range("A1").Offset(0,0)
Selection.Cells(1,1)
ActiveSheet.UsedRange.Cells(1,1)
これらは基準セルを経由しているため、直接指定とは言いません。
結論
✔ 可読性重視 → Range("A1")
✔ ループ処理 → Cells(行, 列)
✔ 実務で安全 → シートを必ず明示する
VBAでは「どのシートを対象にしているか」を明示することが、最も重要です。
もしよろしければ、次は以下も解説できます。
- セル参照の速度比較
- RangeとCellsの内部的な違い
- パフォーマンスを意識した書き方
- バグを防ぐベストプラクティス
どの方向の記事に発展させますか?