Excel VBAの使い方/マクロ・VBA

入力データの行数を取得するテクニック(2ページ目)

「エクセルでシート作成するマクロ(For文の活用)」で完成させたマクロを改善しながら、より高度なテクニックを紹介していきます。今回は、入力データの行数を取得するテクニックです。

緑川 吉行

執筆者:緑川 吉行

エクセル(Excel)の使い方ガイド


アクティブセル領域を利用しよう

まず、ワークシートの数を指定していた行は不要になるので削除しておきます。


データが入力されている行数を取得するには「アクティブセル領域」を利用します。アクティブセル領域とは「空白行と空白列で囲まれているセル範囲」のことで、今回のシートの名前が入力されている範囲もアクティブセル領域となります。データが何行入力されていても、空白行と空白列で囲まれていれば、その入力範囲を参照できるので、データが入力されている行数を取得できる、というわけです。


アクティブセル領域を選択するには、領域内のセルを選択して「Ctrl」キー+「Shift」キー+「*」キーを押します。ひとまず、この操作をマクロ記録してみましょう。マクロ記録を開始して、アクティブセル領域内のセルA5を選択して、「Ctrl」キー+「Shift」キー+「*」キーを押し、マクロ記録を終了します。


すると、次のようなマクロが作成されます。1行目の「Range("A5").Select」は、アクティブセル領域内のセルA5を選択した操作です。「オブジェクト.メソッド」の基本的なステートメントですね。そして、2行目には、選択したセルA5を表すSelectionプロパティ、選択する操作を表すSelectメソッドの間に「CurrentRegion」というキーワードが記述されていますね。これがアクティブセル領域を参照するキーワード「CurrentRegionプロパティ」です。したがって、この2行目のステートメントは「選択したセルの(選択したセルを含む)アクティブセル領域を選択する」と読み解くことができます。
※今回の場合、新しいブックを作成してマクロ記録を行っていないため、マクロ記録で作成されたマクロは、「標準モジュール」の「Module2」にあります。


データが入力されている行数を取得するには

目的は「データが入力されている行数を取得すること」だったので、アクティブセル領域の「行数」を取得することを考えます。

まず、2行目の「Selection」は1行目の「Range("A5")」を指しているので、「Selection」を「Range("A5")」に置き換えて1行目を削除します。
※1行目の「.Select」、2行目の「Selection」を削除し、1行目と2行目をつなげてもよいです。


アクティブセル領域を選択する必要はないのでSelectメソッドを削除し、アクティブセル領域の「すべての行」を参照する「Rowsプロパティ」、参照したすべての行の「行数」を取得する「Countプロパティ」を記述します。そして、アクティブセル領域には表タイトルも含まれているので、その分を引きます。これで、データが入力されている行数を取得する部分が完成しました。
※作成したのはステートメントの一部分なので、このまま実行するとエラーが発生します。MsgBox関数を記述して「MsgBox Range("A5").CurrentRegion.Rows.Count - 1」とすれば、入力されているデータの行数をメッセージボックスで表示することができます。


>できあがったステートメントの一部を、作成しているマクロに組み込んでみましょう。次ページへどうぞ!
  • 前のページへ
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます