カテゴリ: Excel VBA 更新日: 2026/04/04

Excel VBAでセルを取得する基本!RangeとCellsの書き方を完全解説

Excel VBAでセルを取得する基本!Range/Cellsの書き方をやさしく解説
Excel VBAでセルを取得する基本!Range/Cellsの書き方をやさしく解説

先生と生徒の会話形式で理解しよう

生徒

「先生、VBAを使ってエクセルの特定のマス目(セル)に文字を入れたり、色を変えたりしたいんですけど、どうやってその場所を指定するんですか?」

先生

「それは『Range』や『Cells』という命令を使います。人間が住所を頼りに家を探すように、VBAもセルの名前や番号を使って場所を見つけるんですよ。」

生徒

「住所みたいなものなんですね!RangeとCells、どっちを使えばいいんでしょうか?」

先生

「実はそれぞれ得意な場面が違います。まずは基本的な使い方から、初心者の方にも分かりやすく説明しますね!」

1. セルを取得するとは?Excel VBAの基本のキ

1. セルを取得するとは?Excel VBAの基本のキ
1. セルを取得するとは?Excel VBAの基本のキ

Excel VBA(ブイ・ビー・エー)で自動化を進める際、もっとも頻繁に行う操作が「セルを取得する」ことです。取得するとは、簡単に言えばプログラムに対して「このマス目に対して命令を出してね!」と指定することを指します。Excelの画面上にはたくさんの四角いマス目がありますが、これらを一つひとつ区別して名前を呼んであげなければ、VBAはどこを操作すればいいか迷ってしまいます。

プログラミング未経験の方には、「郵便番号」や「番地」をイメージしていただくと分かりやすいでしょう。特定の家を指し示すために住所が必要なように、Excelでもセルの位置を特定するためのルールがあります。主に使われるのがRange(レンジ)Cells(セルズ)という2つのキーワードです。これらをマスターすることで、データの入力、計算、書式設定といったすべての自動化操作が可能になります。SEO対策としても、この「セル操作」はExcel作業効率化の第一歩として非常に人気のあるテーマです。

2. Rangeの使い方!直感的な「名前」でセルを指定する

2. Rangeの使い方!直感的な「名前」でセルを指定する
2. Rangeの使い方!直感的な「名前」でセルを指定する

Range(レンジ)は、Excelのシート上で普段見ている「A1」や「B2」といった形式でセルを指定する方法です。私たちが普段「Aの1番のセル」と呼んでいる感覚そのままにコードを書けるので、非常に直感的で分かりやすいのが特徴です。


' A1セルに「こんにちは」と入力します
Range("A1").Value = "こんにちは"

' B2セルに数字の100を入れます
Range("B2").Value = 100

書き方のコツは、セルの名前を " "(ダブルクォーテーション)で囲むことです。これは、VBAに「これは文字としての名前ですよ」と伝えるためのルールです。Rangeは「範囲」という意味を持っており、一つのセルだけでなく、複数のセルをまとめて指定するのも得意です。初心者の方が最初に覚えるべき、もっとも身近な命令と言えるでしょう。

3. Cellsの使い方!「行」と「列」の番号で指定する

3. Cellsの使い方!「行」と「列」の番号で指定する
3. Cellsの使い方!「行」と「列」の番号で指定する

一方、Cells(セルズ)は、セルの位置を「数字」だけで指定する方法です。Excelのシートは縦方向を「行(ぎょう)」、横方向を「列(れつ)」と呼びますが、Cellsはこの順番通りに「何行目の、何列目」と数字で伝えます。


' 1行目の、1列目(つまりA1セル)に値を入れます
Cells(1, 1).Value = "Cellsで入力"

' 5行目の、2列目(つまりB5セル)に値を入れます
Cells(5, 2).Value = "5行目のB列です"

パソコンを触ったことがない方にとって、最初は「A列」が「1列目」、「B列」が「2列目」と数えるのが少し大変に感じるかもしれません。しかし、Cellsは「1、2、3...」と数字で場所を指定できるため、後で学ぶ「繰り返し処理(ループ)」という大量のデータを一瞬で処理する技術と相性が抜群です。Rangeが「名前」で呼ぶ方法なら、Cellsは「番号」で呼ぶ方法だと覚えておきましょう。

4. Rangeで複数のセル(範囲)をまとめて操作する

4. Rangeで複数のセル(範囲)をまとめて操作する
4. Rangeで複数のセル(範囲)をまとめて操作する

Rangeの真骨頂は、広範囲のセルを一度に指定できることです。例えば、「A1からC3まで全部に色を塗りたい」というような時に便利です。複数のセルを指定する場合は、開始位置と終了位置を :(コロン)で繋ぎます。


' A1からC5までの範囲を一気に「入力済み」という文字で埋めます
Range("A1:C5").Value = "一括入力"

' A1からC5までの範囲の背景色を黄色にします
Range("A1:C5").Interior.Color = vbYellow

Interior.Color(インテリア・カラー)という難しい言葉が出てきましたが、これは「内側の色」という意味です。このように、Rangeを使えば広大なシートの中から特定のエリアだけを抜き出して、一瞬で見た目を変えることができます。実務で表を作成したり、大量のデータを整理したりする際に、一箇所ずつ手作業で色を塗る手間がゼロになります。

5. 変数を使ってセルの位置を自由自在に変える

5. 変数を使ってセルの位置を自由自在に変える
5. 変数を使ってセルの位置を自由自在に変える

プログラミングの醍醐味は、状況に合わせて操作する場所を変えることです。ここで活躍するのが変数(へんすう)です。変数とは、値(数字や文字)を入れておくための「箱」のことです。Cellsと変数を組み合わせると、操作するセルの場所を魔法のようにスライドさせることができます。


Dim gyou As Integer ' 「gyou」という名前の数字用の箱を作ります
gyou = 10           ' 箱に「10」を入れます

' Cellsの行番号に変数を使います(10行目の1列目を指すことになります)
Cells(gyou, 1).Value = "変数の力です"

Dim(ディム)は「これから箱を使います」という宣言で、Integer(インテジャー)は「中に入れるのは整数ですよ」という意味の用語です。この仕組みを使えば、「データが入っている最後の行まで順番にチェックする」といった複雑な自動化ができるようになります。初心者の方が「プログラミングらしくなってきた!」と感じる、非常にワクワクするポイントです。

6. RangeとCells、どっちを使う?シーン別の選び方

6. RangeとCells、どっちを使う?シーン別の選び方
6. RangeとCells、どっちを使う?シーン別の選び方

「結局どっちを使えばいいの?」という疑問にお答えします。実務における使い分けのベストプラクティスは以下の通りです。まずRangeが適しているのは、特定の決まったセル(例えば「合計」と書かれた決まったマス目など)を操作する場合や、プログラムの読みやすさを重視する場合です。コードを見てすぐに「あ、A1のことだな」と分かるのがメリットです。

対してCellsが本領を発揮するのは、先ほど紹介した「変数」を使って場所を次々に変えたいときです。1行目、2行目、3行目...と順番にデータを調べていくような処理は、Cellsでなければ書くのが非常に困難です。最初は慣れているRangeを使い、慣れてきたらCellsに挑戦するというステップアップがおすすめです。SEOキーワード「VBA セル 指定 使い分け」で悩む多くの人にとって、この「固定ならRange、動かすならCells」というルールは最強の指針になります。

7. セルを指定した後の「操作」の種類を知ろう

7. セルを指定した後の「操作」の種類を知ろう
7. セルを指定した後の「操作」の種類を知ろう

場所を指定した後は、そこで「何をするか」を決めます。これまでに .Value(バリュー:値を入れる)という命令が出てきましたが、他にもたくさんの操作があります。例えば、セルの内容を消去する、フォントを太くする、罫線を引くといったことが可能です。


' A1セルの値だけでなく、書式もすべてクリアします
Range("A1").Clear

' B2セルの文字を太字にします
Range("B2").Font.Bold = True

' C3セルの文字の色を赤にします
Range("C3").Font.Color = vbRed

Clear(クリア)や Font.Bold(フォント・ボールド)など、英単語の意味を考えればなんとなく動きが予想できるのがVBAの良いところです。パソコン初心者の方も、まずは英単語のパズルを組み合わせる感覚で、色々な命令を試してみてください。自分で書いたコードで画面上のエクセルが動く快感は、一度味わうと病みつきになりますよ。

8. 別のシートのセルを操作するコツ

8. 別のシートのセルを操作するコツ
8. 別のシートのセルを操作するコツ

ここまでは、今開いているシートだけを操作してきましたが、実務では「シート2のデータをシート1にコピーしたい」という場面も多いはずです。その場合は、RangeやCellsの前に「どのシートか」という情報を付け足します。


' 「Sheet2」という名前のシートのA1セルに書き込みます
Worksheets("Sheet2").Range("A1").Value = "別のシートだよ"

' 1番左側にあるシートの1行目・1列目に書き込みます
Worksheets(1).Cells(1, 1).Value = "番号で指定"

このように Worksheets("名前") を繋げることで、VBAは迷うことなく目的の場所へたどり着けます。もしこれを書き忘れると、VBAは「今目の前にあるシートのことかな?」と勝手に判断してしまいます。ミスを防ぐためには、操作したい対象をはっきりと指定することが、プロレベルの安定したプログラムを作るための設計ポイントとなります。Excel操作の自動化において、この「対象の明示」は非常に重要なキーワードです。

カテゴリの一覧へ
新着記事
New1
Excel VBA
ExcelマクロとVBAの違いとは?初心者でもわかる自動化の基本と仕組みを徹底解説
New2
Office Scripts
Office ScriptsでExcelのシート保護を自動化!ワークシート保護・解除をスクリプトで制御する方法
New3
Office Scripts
Office Scriptsの基本!Excel自動化で使う関数とコードの書き方
New4
Excel VBA
Excel VBAの変数とは?宣言・型指定・初期値の基本をやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.2
Java&Spring記事人気No2
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド
No.3
Java&Spring記事人気No3
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBA参照設定エラー「参照が見つかりません」を完全解説!初心者でも原因と対処法がわかる
No.5
Java&Spring記事人気No5
Excel VBA
Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化
No.6
Java&Spring記事人気No6
Office Scripts
Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法
No.7
Java&Spring記事人気No7
Excel VBA
Excel VBAの開発環境を最速で整える!VBEの開き方から基本操作まで完全ガイド
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!なぜTypeScriptを使うのか?Excel自動化のための目的をやさしく解説