注目キーワード
  1. VBA
  2. 関数
  3. ショートカット

【VBA】セル・行・列の指定方法について【入門】

  • 2019年2月23日
  • 2019年4月3日
  • VBA
  • 47回
  • 1件
VBA NO IMAGE

前回の記事ではVBAでの

配列・二次元配列について紹介しました。

今回の記事では

アクティブセルの指定方法

Selectionとの違い

特定のセルの指定方法

行や列の指定方法

以上を紹介します。

ActiveCellとSelectionは同じと思いがちですが、全くの別のオブジェクトになります。

下記の内容を確認して使い分けて覚えていきましょう。

選択中のセルを指定するには?

選択中のセル(アクティブセル)や選択範囲を表すRangeオブジェクトを取得して情報をメッセージ画面に表示する方法を紹介します。毎回、異なるセルを選択して実行するマクロを作成する場合に便利になります。

・アクティブセルの値を表示する

「ActiveCellプロパティ」で作業中のワークシートのアクティブセルを表すRangeオブジェクトを取得できます。そのRangeオブジェクトの値を調べる「Valueプロパティ」でセルの値を調べて「MsgBox関数」でメッセージ画面に表示します。

・実行結果

・選択範囲のセルの番地を表示するには?

「Selectionプロパティ」で作業中のワークシートの選択範囲を表す「Rangeオブジェクト」を取得できます。「Addressプロパティ」でセルの番地を調べて「MsgBox関数」でメッセージ画面に表示します。

・実行結果

アクティブセルと選択範囲の違い

「アクティブセル」は太線で囲まれて、文字を入力できる対象になっているセルのことです。

「選択範囲」とはワークシート上でドラッグすると開始位置と終了位置を結ぶ線を対角線とする長方形のセル範囲を「選択範囲」と呼びます。

「選択範囲」の中でも文字を入力できるセルは「アクティブセル」になります。

シートが1つの場合は単一のセルを選択している場合はActiveCellとSelectionは同じ結果になりますが、

範囲を指定してしまうと違う結果になってしまいますので、記述する際には使い分けに気を付けてください。

特定のセルを指定するには?

アクティブセルや選択範囲にかかわらず毎回、特定のセルに対してマクロで操作対象にする場合に特定のセルやセル範囲をセルの番地で指定するコードを紹介します。

特定の値を表示する

「Rangeプロパティ」に、引数としてセルの番地を表す文字列を指定すると、指定したセルを「Rangeオブジェクト」として取得できます。指定するセルの番地は「A1」のような形式で記述します。またセルに設定した「名前」の文字列も指定できます。

・実行結果

セルに名前を設定するには、数式バーの左側にある「名前ボックス」を利用して、付けることができます。対象のセルや範囲を選択して名前ボックスをクリックして付けたい名前を入力すればセルや範囲に名前を設定できます。

特定のセル範囲のセル番地を表示するには?

単独のセルではなく、セル範囲を「Rangeオブジェクト」として取得するには「Rangeプロパティ」の引数に、その範囲を示すセルの番地を指定します。セル範囲を表すRangeオブジェクトの場合は、Valueプロパティの値は配列になり、「MsgBox関数」の引数にそのまま使用するとエラーになります。ここではAddressプロパティに引数ReferenceStyleを指定して、R1C1形式のセルの番地を「MsgBox関数」でメッセージ画面に表示します。

・実行結果

セルやセル範囲を選択するには?

セルやセル範囲を表す「Rangeオブジェクト」を取得したら、セル操作の基本となる「選択」を実行してみましょう。この操作には「Activeメソッド」と「Selectメソッド」を使用します。

・セルを選択する

セルを選択するには、そのRangeオブジェクトのSelectメソッドを使用します。例では1つのセルに対してSelectメソッドを使用していますが、Rangeオブジェクトでセル範囲を指定してSelectメソッドを実行すればセル範囲が選択できます。

・実行結果

・SelectメソッドとActiveメソッドの違い

SelectメソッドとActiveメソッドでは1つのセルを選択する場合は同じように対象のセルが選択されますが、セル範囲を選択した状態で実行すると結果が異なります。

Selectメソッドではセル範囲を選択した状態で実行すると選択範囲を解除して1つのセルを選択します。一方、Activeメソッドではセル範囲を選択した状態で実行すると選択範囲はそのままでアクティブセルの位置が変更されます。またセル選択以外のセルを指定した場合は選択範囲を解除して指定したセルを選択します。

・実行結果

・実行結果

行・列を指定してセルを選択する

Rangeプロパティは、セルの番地を指定して、そのセルを表すRangeオブジェクトを取得してきましたが、行番号と列番号を指定して、その位置に当たるセルを取得することもできます。この操作には「Cellsプロパティ」を使用します。

・指定した行・列のセルを選択する

「Cellsプロパティ」に行番号と列番号を指定すると、ワークシート内の該当する位置にあるセルを表す「Rangeオブジェクト」を取得することができます。列番号は、左端から数えた数値か、列見出しを表す「”A”」などの文字列で指定することができます。

・実行結果

行や列を選択するには?

行単位や列単位のセルのまとまりを表すRangeオブジェクトを取得します。Rangeプロパティでも行や列を指定することも可能ですが、行や列を対象に操作をおこなう場合は「Rowsプロパティ」と「Columnsプロパティ」を使用した方が処理が確実です。

行番号で選択する

「Rowsプロパティ」に引数として行番号を指定すると、行全体をRangeオブジェクトとして取得できます。また「Columnsプロパティ」の引数に列番号を指定すると、列全体をRangeオブジェクトとして取得できます。

・実行結果

行単位で選択する

複数の行の範囲をRangeオブジェクトとして取得したい場合はRowsプロパティの引数に行単位のセル参照を表す文字列を指定します。セル参照は文字列のため「”」で前後囲みます。

・実行結果

列単位で選択する

複数の列の範囲をRangeオブジェクトとして取得したい場合は、Columnsプロパティの引数に列単位のセル参照を表す文字列を指定します。列のセル参照は列見出しの「”A”」などの文字列です。

・実行結果

まとめ

今回は、セルの指定方法について紹介しました。

ActiveCellとSelectionの違いと使いどころは覚えておくと便利です。

主にはActiveCellは単一セルに使用してSelectionは範囲にも使用できると覚えておけば大丈夫です。

ActiveCellとSelectionはオブジェクトになりそのセルの参照が取得できます。

ActiveとSelectはメソッドになり指定したセルを選択したりアクティブにすることができます。

オブジェクトの選択や操作については実際に動かしていると自然と覚えられます。

前の記事から読み直す場合はこちらです。

【VBA】配列と2次元配列について【入門】

VBAの記事一覧はこちらからです。

【基礎から学べる】ExcelマクロとVBA【入門】

NO IMAGE
最新情報をチェックしよう!