-2

B2からドキュメントの最後までの日付の範囲があります。ユーザーに入力ボックス「探している日付」を表示させたいと思っています。ユーザーは日付を入力します。次に、ユーザー データを使用して行 B2 を最後まで検索し、その特定の日付を見つけます。その日付が存在しない場合、別のボックスがポップアップし、その範囲を拡張して再試行する必要があることをユーザーに知らせます。その範囲内にある正しいデータを入力しても、「あなたの良い」を出さないにもかかわらず、「追加日」を取得し続けます。誰でも私を助けることができますか?

 Sub Macro2()
     datein = CDate(InputBox("Date Project Will Start"))

     For Each c In Worksheets("sheet1").Range("A1:D100").Cells
           If datein = c.Value Then MsgBox "Your Good"

     Next
     MsgBox "Add More Days"
 End Sub
4

2 に答える 2

1

grantnz が提供する回答は実際に値比較の問題を解決しますが、2 番目のメッセージを回避するには、ループを中断して何らかの検証を実行する必要があります...次のようなもの:

Sub Macro2()
   Dim datein as Date, found as Boolean ' I prefer explicit variable declaration

   datein = CDate(InputBox("Date Project Will Start"))
   found = False

   For Each c In Worksheets("sheet1").Range("A1:D100").Cells
       If datein = c.Value Then 
           MsgBox "Your Good"
           found = True
           Break ' You don't need to continue the iteration if you find a date
       End If
    Next
    If Not found Then 
        MsgBox "Add More Days" ' This message pops up only if found is false
    End If
End Sub
于 2013-07-30T04:29:49.240 に答える