• 締切済み

何列の何行目が最終行なのか取得するコードはありますでしょうか?

  A列  B列  C列 1  ○   ○ 2        ○ 3               ○ これは最終行が3行目と言うのがぱっと見でわかりますが もっと列も行も多い場合、 シート内の何列の何行目が最終行なのか取得するコードはありますでしょうか? Cells(65536, ?).End(xlUp).Row を行ないたいのですが 毎回何列の行が一番下かを取得する方法があれば教えてください。 よろしくお願い致します。

みんなの回答

  • takana_
  • ベストアンサー率44% (21/47)
回答No.5

CurrentRegionというプロパティが便利です。 Sub Macro1()   With Range("A1").CurrentRegion     Debug.Print .Rows.Count   '最終行     Debug.Print .Columns.Count '最終列   End With End Sub

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.4

こんにちは。 下記のような関数を標準モジュールに書いておきます。この方法が最も 高速かつ確実なのですが、ソースが長くなり面倒に見えるのか、あまり メジャーではない気がしますが.... ' // 引数 rSeachArea 内で実データをもった最終セルを返す Public Function FindLastCell(ByVal rSeachArea As Range) As Range      ' // rSeachArea 内にデータが無いとき、Nothing を返す   Dim r As Long, c As Long     On Error GoTo Err_   r = rSeachArea.Find(What:="*", LookIn:=xlValues, _             SearchDirection:=xlPrevious, _             SearchOrder:=xlByRows).Row   c = rSeachArea.Find(What:="*", LookIn:=xlValues, _             SearchDirection:=xlPrevious, _             SearchOrder:=xlByColumns).Column   Set FindLastCell = rSeachArea.Parent.Cells(r, c)   Bye_:   Exit Function Err_:   Set FindLastCell = Nothing   Resume Bye_ End Function 以下は、2つほど使い方サンプルです。ご質問の場合だと、Sample1 の 方ですかね。 Sub Sample1()      ' // シート内の最終セルを探す場合   Dim r As Range   Set r = FindLastCell(Worksheets("Sheet1").Cells)   If Not r Is Nothing Then     MsgBox r.Address   Else     MsgBox "Sheet1 にはデータがない"   End If End Sub Sub Sample2()      ' // 特定のセル範囲内で最終セルを探す場合   Dim r As Range   Set r = FindLastCell(Worksheets("Sheet1").Range("A1:C100"))   If Not r Is Nothing Then     MsgBox r.Address   Else     MsgBox "指定された範囲内にはデータがない"   End If End Sub

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

SpecialCells等は、一旦保存しないと正しい答えを返さない場合がありますので、この方法が一番確実かと思います。 Sub test() With ActiveSheet For x = 1 To .UsedRange.Columns.Count tmprow = .Cells(Rows.Count, x).End(xlUp).Row If tmprow > lstrow Then lstrow = tmprow c = x End If Next MsgBox .Cells(lstrow, c).Address(0, 0) & "セルがデータ最終セルです。" End With End Sub

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

一例 Cells.SpecialCells(xlLastCell).Select 以上

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

例えばシート1なら、 Sub try() With Worksheets("Sheet1").UsedRange MsgBox .Cells(.Cells.Count).Row End With End Sub かな? ただしシートの編集後は一旦上書き保存の必要があるかも。 ご参考まで。