まりふのひと

エクセルシートの最終行番を求める関数を知りたい

ある Excel シートに入力されているデータの最終行番(最大行番)を知りたい。
ある時、ある所でそのような関数を見たような記憶があるが‥‥サッパリ思い出せない。
今は次のようにしている。

    1. ActiveCell.SpecialCells(xlLastCell).Select
    2. LastRow = ActiveCell.Row

これは、[Ctrl]+[End]を押した時に記録されたマクロから取り出したコード。問題点は、「アクティブセルが移動してしまう」ことだ。

※ SpecialCells メソッド (VBA のヘルプ)

関連項目対象使用例アプリケーション情報オブジェクトを返すメソッドです。指定された条件を満たしているすべてのセル (Range オブジェクト) を返します。

  • expression.SpecialCells(Type, Value)
    • expression: 必ず指定します。対象となるオブジェクトへの参照を返すオブジェクト式を指定します。
    • Type: 必ず指定します。XlCellType クラスの定数を使用します。取得するセルの種類を指定します。

      使用できる定数は、次に示す XlCellType クラスのいずれかです。

      • xlCellTypeAllFormatConditions 表示形式が設定されているセル
      • xlCellTypeAllValidation 条件の設定が含まれているセル
      • xlCellTypeBlanks 空の文字列
      • xlCellTypeComments コメントが含まれているセル
      • xlCellTypeConstants 定数が含まれているセル
      • xlCellTypeFormulas 数式が含まれているセル
      • xlCellTypeLastCell 使われたセル範囲内の最後のセル
      • xlCellTypeSameFormatConditions 同じ表示形式が設定されているセル
      • xlCellTypeSameValidation 同じ条件の設定が含まれているセル
      • xlCellTypeVisible すべての可視セル
    • Value: 省略可能です。バリアント型 (Variant) の値を使用します。引数 Type に xlCellTypeConstants または xlCellTypeFormulas を設定し、引数 Value を使うと、特定の種類の定数や数式を含むセルだけを取得することができます。複数の値を加算して指定すると、複数の種類の定数や数式を指定できます。この引数を省略すると、すべての定数および数式が対象になります。
      XlSpecialCellsValues クラスの定数を使用します。

      使用できる定数は、次に示す XlSpecialCellsValue クラスのいずれかです。

      • xlErrors
      • xlLogical
      • xlNumbers
      • xlTextValues
  • 使用例

    次の使用例は、シート 1 で使われたセル範囲の最後のセルを選択します。

    1. Worksheets("Sheet1").Activate
    2. ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
※ 解ったこと

マクロの記録で得た引数はヘルプに載っていない。そこでヘルプにある引数で行ってみた。

    1. ActiveCell.SpecialCells(xlCellTypeLastCell).Select
    2. LastRow = ActiveCell.Row

結論は「全く同じ」だった