0

2 つの基準に基づいて一部の行を削除する必要があるデータのリストがあります。最初の基準は、5 列目にゼロが必要であるということです。2 番目の基準は、フィールド 3 の日付が、フォームで以前に収集されたユーザー入力変数よりも大きくなければならないということです。これらの基準が両方とも満たされている場合、行を削除する必要があります。2 番目の基準をコメント アウトすると、最初の基準に一致する行が正しく削除されるため、日付に関連していることがわかります。また、ユーザーが入力した変数とスプレッドシートの日付が同じ形式であることも確認しました。ここにコードがあります

Dim PYE As Date
Dim vQuestion
vQuestion = Application.InputBox(Prompt:="What is the plan year end date?")
If IsDate(vQuestion) Then
PYE = DateValue(vQuestion)
Else
MsgBox "Invalid date"
End If
If vQuestion = "False" Then Exit Sub



 With ActiveSheet.UsedRange
  .AutoFilter Field:=5, Criteria1:="0", Operator:=xlAnd
   .AutoFilter Field:=3, Criteria1:=">" & PYE
    .Offset(1, 0).EntireRow.Delete
    .AutoFilter
End With

私はこれをしばらくグーグルで調べてきましたが、進歩が見られないので、助けていただければ幸いです。

4

1 に答える 1

0

VBA では、#MM/DD/YYYY# で定義された日付が必要です。必ずしもその形式である必要はありませんが、日付の前後に # 記号があることは間違いありません。それらを数式に貼り付けてみましたか?

おそらく:

AutoFilter Field:=3, Criteria1:=">#" & PYE & "#"
于 2013-06-18T16:15:42.337 に答える