- 締切済み
何列の何行目が最終行なのか取得するコードはありますでしょうか?
A列 B列 C列 1 ○ ○ 2 ○ 3 ○ これは最終行が3行目と言うのがぱっと見でわかりますが もっと列も行も多い場合、 シート内の何列の何行目が最終行なのか取得するコードはありますでしょうか? Cells(65536, ?).End(xlUp).Row を行ないたいのですが 毎回何列の行が一番下かを取得する方法があれば教えてください。 よろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- takana_
- ベストアンサー率44% (21/47)
CurrentRegionというプロパティが便利です。 Sub Macro1() With Range("A1").CurrentRegion Debug.Print .Rows.Count '最終行 Debug.Print .Columns.Count '最終列 End With End Sub
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 下記のような関数を標準モジュールに書いておきます。この方法が最も 高速かつ確実なのですが、ソースが長くなり面倒に見えるのか、あまり メジャーではない気がしますが.... ' // 引数 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)
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)
一例 Cells.SpecialCells(xlLastCell).Select 以上
- n-jun
- ベストアンサー率33% (959/2873)
例えばシート1なら、 Sub try() With Worksheets("Sheet1").UsedRange MsgBox .Cells(.Cells.Count).Row End With End Sub かな? ただしシートの編集後は一旦上書き保存の必要があるかも。 ご参考まで。