| 
    
     |  | こんなので善いのかな? 
 Public Sub DataDelete()
 
 Dim i As Long
 Dim strResult As String
 Dim dtmReceived As Date
 
 Do
 strResult = InputBox("検収月を" & Format(Date, "yyyy/m") _
 & "の形で入力して下さい", "検収月入力", _
 Format(Date, "yyyy/m"))
 If strResult = "" Then
 Exit Sub
 Else
 If IsDate(strResult & "/1") Then
 dtmReceived = DateValue(strResult & "/1")
 Exit Do
 Else
 Beep
 MsgBox "入力が違います"
 End If
 End If
 Loop
 
 Application.ScreenUpdating = False
 
 For i = Range("B65536").End(xlUp).Row To 2 Step -1
 If RowDelete(Cells(i, "B").Value, _
 Cells(i, "F").Value, _
 Cells(i, "H").Value, dtmReceived) Then
 Rows(i).Delete
 End If
 Next i
 
 Application.ScreenUpdating = True
 
 Beep
 MsgBox "処理が完了しました"
 
 End Sub
 
 Private Function RowDelete(vntOrder As Variant, _
 vntDelivery As Variant, _
 vntQuantity As Variant, _
 dtmTop As Date) As Boolean
 
 Dim dtmLast As Date
 
 dtmLast = DateSerial(Year(dtmTop), _
 Month(dtmTop) + 1, 0)
 RowDelete = True
 
 If vntOrder = "処理済" Then
 Exit Function
 End If
 
 If vntQuantity = 1 Then
 If vntDelivery < dtmTop _
 Or dtmLast < vntDelivery Then
 Exit Function
 End If
 End If
 
 RowDelete = False
 
 End Function
 
 |  |