2016-12-06 12 views
0

ExcelワークブックのVBAコマンドボタンで使用しているプロンプトで警告を設定しようとしています。ExcelのVBAマクロでNow()関数が動作しなくなった

これは2日前にうまくいきましたが、現時点では機能しません。理由はわかりません。ここでは、前に働いていたコードを持っている:

Option Explicit 

Private Sub CommandButton1_Click() 
Dim wb As Workbook Dim FinalDate As Variant 
Set wb = Application.Workbooks("Test") 

FinalDate = InputBox("Introduce the final date for analysis in the 
following format MM/DD/YYYY") 

'< Check that final date is in the correct format 
     If IsDate(FinalDate) = False Then 
      MsgBox ("The date you entered is NOT IN THE CORRECT FORMAT!!!") 
      Exit Sub 
     End If 

'<Check that final date is NOT later than today 
     If FinalDate > Now Then '< **This part is the one that used to work** 
      MsgBox ("The date you entered is LATER THAN THE CURRENT DATE!!!") 
      Exit Sub 
     End If 

      wb.Worksheets("Sheet1").Range("K2") = FinalDate 
End Sub 

これは前に働いていた部分ですが、昨日の作業を停止:

If FinalDate > Now Then 
    MsgBox ("The date you entered is LATER THAN THE CURRENT DATE!!!") 
    Exit Sub 
End If 

を現時点で、私はに任意の日付を導入するたびにこのプロンプト画面は、現在の日付よりも遅いか早いかにかかわらず、「入力した日付が現在の日付より遅いです!!!」という警告が表示されます。

Excelワークブックで変更された唯一の事は、将来の予定からの将来の日付を含むいくつかのセルが異なるスプレッドシートに存在することですが、now()関数はブック内の日付、そう?

はあなたの問題は、あなたが今、関数によって返される日付とユーザーが入力した文字列を比較しているということです、非常に

よろしく、

Yatrosin

+0

あなたはそれだけでは 'FinalDate –

答えて

3

、ありがとうございました。

この値は2種類あります。

If FinalDate > Now Then 

あなたは(CDate関数と日付にFinalDateを変換する必要があります)

if CDate(FinalDate) > Now Then 
+0

唯一の理由は機能していないかを示すことが必要であるものにあなたの例を削減することができます> Now'は時々動作しますが、それはキャストなしで 'String'比較を実行しているということです(' Now'は暗黙のうちに 'String'にキャストされています)。 – Comintern

+0

ありがとうございます。 'IsDate()'がエラーを返さなかったため、文字列と日付を比較していることはわかりませんでした。 – Yatrosin

関連する問題