Warning: The magic method InvisibleReCaptcha\MchLib\Plugin\MchBasePublicPlugin::__wakeup() must have public visibility in /home/c3541351/public_html/guakw.info/wp-content/plugins/invisible-recaptcha/includes/plugin/MchBasePublicPlugin.php on line 37
【VBA入門】RangeとCellsの違い、もう迷わない!Excel自動化の「挫折しない」第一歩 | ぐー@高配当株ブログ

【VBA入門】RangeとCellsの違い、もう迷わない!Excel自動化の「挫折しない」第一歩

【業務効率化】VBA
スポンサーリンク

こんにちは!ぐーです。

いつもブログをご覧いただき、ありがとうございます!

さて、VBAの勉強を始めたあなたが、最初につまずきやすいポイントがやってきました。

  • 「VBAでセルを操作したいけど、RangeとCellsってのがある…」
  • 「どっちもセルを選ぶだけじゃないの?何が違うの?」
  • 「調べても専門用語ばかりで、もう挫折しそう…」

わかります。私も最初はチンプンカンプンでした。

この記事は、そんな「VBAのセルの指定方法がわからなくて、不安になっている」方向けに書きました。

それでは行きましょう!

【業務効率化】VBAの記事を見る

結論:違いは「住所」か「座標」か

いきなり結論から言いますね。

  • Range = 「A1」のように、見たままの住所(番地)で指定する。直感的。
  • Cells = 「3行目の、5列目」のように、数字の座標で指定する。計算に強い

これだけです。

この「座標(数字)」で指定できることが、VBAを動かす上でめちゃくちゃ重要になってきます。


1. 「見たまま」でわかりやすい:Range

Rangeは、あなたがExcelシートで見ている「A1」とか「B2:C10」といったセルの番地を、そのままカッコの中に「”(ダブルクォーテーション)」で囲って書く方法です。

メリット:

  • とにかく直感的でわかりやすい。
  • 「A1からC5まで」のように、複数のセル範囲を”A1:C5″と一発で指定できる。

デメリット:

  • 「i 行目のB列」のように、行や列が動的に変わる(変数を使う)処理がちょっと苦手。(できなくはない)

📝 コピペで動かしてみよう (Range)

VBAの編集画面(VBE)を開いて、Sub Test1() と End Sub の間に下のコードを貼り付けて実行(F5キー)してみてください。

A1セルに「こんにちは」と表示されます。

Sub Test1()
    ' Rangeを使ってA1セルに文字を入れる
    Range("A1").Value = "こんにちは"
   
    ' Rangeを使ってB2からC5セルを黄色く塗る
    Range("B2:C5").Interior.Color = vbYellow
End Sub


2. 「数字(座標)」で指定する:Cells

Cellsは、Cells(行番号, 列番号) という形で、どっちも数字で指定します。

  • Cells(1, 1) → 1行目の1列目 → A1セル
  • Cells(5, 3) → 5行目の3列目 → C5セル

メリット:

  • 行番号や列番号に変数(i や j など)を使いやすい。
  • VBAの真骨頂である「繰り返し処理(For文)」と最強のタッグを組みます。

デメリット:

  • 「C5セル」がCells(5, 3)になるのが、最初はパッと見てわかりにくい。(A=1, B=2, C=3… と脳内変換が必要)

📝 コピペで動かしてみよう (Cells)

今度はCellsです。B2セル(2行目の2列目)に「VBA」と表示されます。

Sub Test2()
    ' Cellsを使ってB2セルに文字を入れる
    ' B列はAから数えて2番目なので「2」
    Cells(2, 2).Value = "VBA"
End Sub



3. なぜ「Cells(座標)」が必要なの?

「Rangeが直感的でわかりやすいなら、全部Rangeで良くない?」と思いませんか。私は最初思ってました。

ここで、実務あるある「このリストの最後まで、C列に『処理済』と入力して」

こんな作業、よくありますよね。

もしRangeだけでやろうとすると…

Range(“C10”).Value = “処理済”

Range(“C11”).Value = “処理済”

Range(“C12”).Value = “処理済”

これを最後まで書くことこそ面倒です。

Cellsと「繰り返し(For文)」を使うと、こうなります。

📝 コピペで体感! (Cells + For文)

A列の1行目から10行目まで、一瞬で「No.1」~「No.10」と入力されます。

Sub Test3()
    ' 「i」という変数を使って、iを1から10まで変えながら繰り返す
    Dim i As Long
    For i = 1 To 10
        ' Cells(i, 1) は、iが1ならA1、iが2ならA2...となる
        Cells(i, 1).Value = "No." & i
    Next i
End Sub


Cells(i, 1) の i 。

この「変数が使える」+「数字で制御できる」ことこそが、CellsがVBAで必須とされる最大の理由です。

少し補足しておくと、Rangeでも変数は使えます。
ただし、Range(“A” & i)となり、Cellsほどスマートでなくなってしまうのです。


まとめ:最初の使い分けはコレでOK!

VBAに慣れないうちは、こう覚えておけば大丈夫です。

  • Range を使うとき:
    • 「A1セル」や「B2:D10」など、場所が決まっているセルを1回だけ操作したいとき。
  • Cells を使うとき:
    • For文(繰り返し)の中で、「i 行目」や「j 列目」のように動的にセルを操作したいとき。

VBAは、日々の「面倒くさい」を自動化してくれる、強い味方です。

最初は専門用語に圧倒されるかもしれませんが、一つずつ「動いた!」を積み重ねていけば、必ず使いこなせるようになります。

まずはコピペで動かして、「動いた!」という小さな成功体験を楽しんでみてほしいです!

【業務効率化】VBAの記事を見る


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を厳選して紹介します。 もう本選びで失敗したくない方は、ぜひ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でも、年間100万円以上の節約・資産管理・スキルアップで新NISAで年間360万円投資し、iDeCoもフル活用しています。日商簿記3級持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、稼ぐ力を高めるITスキルについて発信しています。

生活を豊かにしたくて、高配当株投資で年間配当金60万円をめざしています。現在は年間配当金25万円以上達成!

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました