Excelマクロ「セルの選択」

Excelマクロで「セルを選択」してみます。
ご存知の通りエクセルは、ブック、シート、セルから成っており、セルを選択(=指定)して、値を入力したり、値を読み取ったり、セルに色を付けたりと、セル選択はVBAで欠かすことのできない基本的な処理です。

ただ、ひとくちに「セル選択」と言っても、実は方法が色々あります・・。
サンプルコード↓では、3種類の方法を例として挙げています。

はい、念のためですが、実行の仕方は以下の通りです。くわしくはこちら

  1. 新規Excelファイルを作る(.xlsmで保存する)
  2. エディタを起動する([Alt]+[F11]が簡単)
  3. 「標準モジュール」を挿入する
  4. その上で、上記のサンプルコードをコピペし、
  5. マクロの実行!([Alt]+[F8]→[Enter]が便利)

こんな画面になりましたか??

3つの例を挙げていますが、ひとつずつ説明しましょう。

まず 「Range(“A1”).select」 から。
日本語に翻訳すると「A1の範囲を選択しなさい」です。

「Range(“A1”)」が「A1の範囲」
「.(ピリオド)」が(言うなれば)「を(かな?)」
「Select」が「選択しなさい」
(あるいは、「~.Select」が「~を選択しなさい」かな?)

これは比較的、直感的にわかりやすいかもしれませんね。ただし、慣れてくるとあまり使いません(私はね。)。
なぜなら、行・列を番号化して扱った方が、色々都合が良いからです。

次、「Cells(2,1).Select」です。
これが上記で述べた、「行・列を番号化して都合良く記述する」例です。私はほとんどこれを使います。
同じく翻訳すると、「行=2、列=1のセルを選択しなさい」です。「Cells(?,?)」の場合、お約束として「Cells(行番号,列番号)」となります。

少しわき道に逸れますが、エクセルでの「行と列」、正しく理解していますか?決まり事なので、これを機に覚えましょう。
「行」=下方向に行くもの(常に、数字で行番号が表されているやつです)
「列」=右方向に行くもの(デフォルトでは、A、B、Cで列番号が表されているやつです)

ついでに覚えると便利なのが英語です。
「行」=Row(ロウ)
「列」=Column(コラム?カラムかな?)

最後、「Selection(2,2).Select」です。
これは少しトリッキーなのですが、慣れると便利で、非常によく使います。
翻訳すると、「いま選択しているセルを基準として、行=2、列=2のセルを選択しなさい」です。「Selection(?,?)」の場合も「Cells(?,?)」と同様、「Selection(行番号,列番号)」となります。

もう少し丁寧に説明すると、こうなります。
「Selection(2, 2).Select」が処理される時点(正確には、処理される直前)の「いま選択しているセル」は、セルA2です。
なぜなら、その直前に「Cells(2, 1).Select(行=2、列=1、つまりセルA2を選択しなさい)」を処理しているからです。
そして、「セルA2を基準として行=2、列=2に該当するのはセルB3」であるためです。
ここ、非常に重要です!

「Cells(?,?)」と「Selection(?,?)」の違いは、なにを基準とするかです。
「Cells(?,?)」は、常に「セルA1」を基準とします。
「Selection(?,?)」は、「いま選択しているセル(「ActiveCell」と言います)」を基準とします。

私はセル選択については、ほぼこの2つ(「Cells(?,?)」と「Selection(?,?)」)しか使いません。これでほぼ充分です。

ほか、たまに使うのは「範囲選択」です。
Excelの通常作業では、「範囲選択」は普通によく使うと思いますが、VBAでは実はあまり使いません。
なぜなら、「範囲選択してどんっ(と処理)!」というマクロはあまり使わず、「この範囲のそれぞれのセルについて(ループを使って)処理」というマクロが多くなるためです。

とは言え、範囲選択も使わないわけではないので、説明します。
書き方は、概ね2通りです。

Range(Cells(1,1),Cells(9,9)).Select
Range(Selection(1,1),Selection(9,9)).Select

基本構文は、「Range(セル指定① , セル指定②)」です。
そして、セル指定①と②に囲まれた範囲が選択されます。
そして、セル指定の仕方は、「Cells(?,?)」と「Selection(?,?)」です。

当然、以下のような書き方もアリですが、前述の通りあまり使いません。

Range(“A1″,”I9”).Select

以上、「セル選択」でした。

 

Excelマクロの目次へ戻る