• ベストアンサー

【エクセルマクロ】シート内の最終行を判定するには?

お助けください。 社員A (空白行 社員B (空白行 社員C (空白行 ・・・ といった感じで、一列が記述されている場合の 最終行を判定するにはどうすればいいのでしょうか? Excel2002を使用しています。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.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)
回答No.3

  例えば、A列に社員名があるとした場合 Sub Test()  Dim LastRow As Long '社員名が入力されてる最後の行     LastRow = Range("A65536").End(xlUp).Row 'その次の空白の行   LastRow = LastRow + 1 End Sub   以上。  

noname#22222
noname#22222
回答No.2

後の方の行からテストするという手もあります。 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)
回答No.1

A列の1行目に「社員A」が入っていると仮定すると、 Dim Row As Integer Row = 1 While (Cells(Row,1).Value <> "") 'A列に社員名も何もない その行で何か処理 Row = Row + 2 '1行飛ばして2行先へ Wend こんな感じでしょうか。

関連するQ&A