- ベストアンサー
【エクセルマクロ】シート内の最終行を判定するには?
お助けください。 社員A (空白行 社員B (空白行 社員C (空白行 ・・・ といった感じで、一列が記述されている場合の 最終行を判定するにはどうすればいいのでしょうか? Excel2002を使用しています。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。KenKen_SP です。 #3 ご回答に補足して Excel2007 での動作も視野に入れるなら。 lngLastRownum = Cells(Rows.Count, "A").End(xlUp).Row MsgBox "方法1: " & CStr(lngLastRownum + 1) Excel2007 では行・列数ともに拡張されてます。これから書くコード は Cells(65536,"A") ではなく、 ・Cells(Rows.Count,"A").End(xlUp) ・Cells(1,Columns.Count).End(xlToLeft) ようにバージョンに左右されない書き方をした方がベターです。 でも 65536 行ある、または 256 列あるデータなんてそれほど多くは ないでしょうし、一時的な用途のコードなら神経質になる必要は全然 ありません。 ご参考までに。
その他の回答 (3)
- onlyrom
- ベストアンサー率59% (228/384)
例えば、A列に社員名があるとした場合 Sub Test() Dim LastRow As Long '社員名が入力されてる最後の行 LastRow = Range("A65536").End(xlUp).Row 'その次の空白の行 LastRow = LastRow + 1 End Sub 以上。
後の方の行からテストするという手もあります。 Private Sub CommandButton1_Click() MsgBox GetLastRow(1, 1, 100) + 1 & "行が最終行です。!" End Sub Public Function GetLastRow(ByVal C As Integer, _ ByVal S As Long, _ ByVal E As Long) As Long Dim I As Long For I = E To S Step -1 If Len(Cells(I, C) & "") > 0 Then GetLastRow = I Exit For End If Next I End Function
- ham_kamo
- ベストアンサー率55% (659/1197)
A列の1行目に「社員A」が入っていると仮定すると、 Dim Row As Integer Row = 1 While (Cells(Row,1).Value <> "") 'A列に社員名も何もない その行で何か処理 Row = Row + 2 '1行飛ばして2行先へ Wend こんな感じでしょうか。