• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAで最終行を取得する方法)

VBAで最終行を取得する方法

このQ&Aのポイント
  • VBAを使用して最終行を取得する方法について教えてください。
  • Range関数とEndメソッドを使用することで、最終行を取得することができます。
  • しかし、A列が空白の場合にはオーバーフローが発生するため、別の方法を使用する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

>ActiveSheet.UsedRange.Rowを試したところ、最終行として取得できたのは「1」でした。 usedrangeという「一塊のセル範囲」のrowは、その「先頭セル」の行番号を返します。 usedrangeの「最後の(少なくとも最下行の)セル」の行番号を取得しなければ目的を達成できませんね。 例: activesheet.usedrange.cells(activesheet.usedrange.count).row #参考 usedrangeがたとえば必ず間違いなく「A1セルから(少なくとも1行目のセルから)始まっている」事が保証できるなら、 activesheet.usedrange.rows.count のように代替する手もあります。

その他の回答 (3)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 ActiveSheet.UsedRangeは使用している(書式やコメント等の何らかの設定がなされていて、値が入力されていないセルも含む)セルが存在している範囲を返すものです。  御質問文の下の方の例の場合、ActiveSheet.UsedRangeが示すセル範囲はA1:D3の範囲なのですから、 ActiveSheet.UsedRange.Row としますと Range("A1:D3").Row と同じ事になりますので、A1:D3のセル範囲の中で最も左上にあるA1セルの行番号である1が返される事になります。  ですから、 ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 とされては如何でしょうか?  但し、前述しました様にActiveSheet.UsedRangeは値が存在するセルだけではなく、書式が設定されているセルも対象としていますので、3行目よりも下の行に何らかの書式やコメント等が設定されているセルが存在している場合には、3よりも大きな数値が返される事になりますので注意して下さい。  もし、書式等が設定されているセルは無視して、データが入力されているセルのみを対象としたい場合には、For~Next等の繰り返し処理を使用して、1列ごとに最終行を調べて行き、その中で最も大きな値を最終行の行番号の値とする必要があると思います。  以下のVBAでは、A列~D列の中で最も下にデータが存在する行の行番号を変数LastRowの値として得る事ができます。 Dim c as Range Dim tmp as Long Dim LastRow as Long LastRow=0 For each c in Range("A" & Rows.Count & ":" & "D" & Rows.Count) tmp = c.End(xlup).Row If tmp>LastRow then LastRow = tmp Next c

  • dogs_cats
  • ベストアンサー率38% (278/717)
回答No.2

回答はNO1の方の通りです。 今回は空白行の無いデータがB1から続いているので Range("B1").End(xlDown).Rowを使用出来ますが、途中で空白行がある場合は下からupさせます。 MaxRow = Cells(Rows.Count, 1).End(xlUp).Row 上記の1はA列の列番号"A"と入力しても可能です。 MaxCol = Cells(1, Columns.Count).End(xlToLeft).Column 上記は最終列で途中に空白セルが存在する場合です。 http://www.niji.or.jp/home/toru/notes/8.html ご参考まで。

noname#212058
noname#212058
回答No.1

B列には最後までデータが入っているのであれば、 Range("B1").End(xlDown).Row とすれば良いです。最後までデータが入っている列を使うところがポイント。 最後までデータが入っていることが保障される列が無い場合は、追加してしまったほうが楽です。例えば、左端に No. 列を作って1からの連番を入れておくとか。

関連するQ&A