Sub DeleteRowsBeforeDate()
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long
Dim targetDate As Date
Dim dateColumn As Range
Dim dateColumnIndex As Long
' ワークシートを設定
Set ws = ThisWorkbook.Sheets("sheet2") ' シート名を必要に応じて変更
' 日付が入力されている列名を検索(ここでは "開始日")
On Error Resume Next
Set dateColumn = ws.Rows(1).Find("登録月", LookIn:=xlValues, LookAt:=xlWhole)
On Error GoTo 0
' 列が見つからない場合のエラーハンドリング
If dateColumn Is Nothing Then
MsgBox "列名 '登録月' が見つかりませんでした。"
Exit Sub
End If
' 列番号を取得
dateColumnIndex = dateColumn.Column
' 最終行を取得
lastRow = ws.Cells(ws.Rows.Count, dateColumnIndex).End(xlUp).Row
' 基準日を入力(yyyy/mm/dd 形式で)
targetDate = InputBox("基準日を yyyy/mm/dd 形式で入力してください")
' 日付が指定日以前の行を逆順に削除
For i = lastRow To 2 Step -1 ' ヘッダーがある場合、1行目を避ける
If IsDate(ws.Cells(i, dateColumnIndex).Value) Then
If ws.Cells(i, dateColumnIndex).Value <= targetDate Then
ws.Rows(i).Delete
End If
End If
Next i
End Sub