2014-03-01 88 views
0

我正在製作DTR,並且在此DTR的Form_Load上,我希望它檢查當天的日期。當它到達本月的第13,14,15,26,27,28,29或30天時,我想要它做的是彈出一個msgbox提醒所有者員工的薪水。但是,當我運行我的代碼時,即使它不符合我希望msgbox的那一天,它仍然是消息框。例如,如果當天是本月的第3天,它仍會彈出一個msgbox。這是我的代碼。我沒有使用計時器。根據當天創建提醒

Dim strDate As Integer 
    If strDate = Format(Now, "d") = 13 Or 14 Or 15 Or 27 Or 28 Or 29 Or 30 Then 
      'DatePart("d", Now) 
      If MsgBox("Alert Edwin Jay Sandoval or Maria Consuelo regarding your salary!", vbCritical + vbOKOnly, "Salary") = vbOK Then 
      MsgBox "Alert Edwin Jay Sandoval or Maria Consuelo regarding your salary!", vbCritical + vbOKOnly, "Salary" 
    End If 
End If 
+0

你實際上要'MsgBox'他們兩次。代碼中嵌套的if語句是不必要的,只需保留'MsgBox'語句即可。 – Paul

+0

每個人都會收到通知,所以如果他們在13日得到報酬,那麼他們也會在隔天提到提醒......也許你需要稍微分解一下,以便包括某種更具體的檢查。什麼是付款規則?這是兩週嗎? – Paul

回答

0

您目前只比較一天的13和其他條款在您的OR聲明。

你需要做這樣的事情:

If (Format(Now, "d") = 13) Or (Format(Now, "d") = 14) _ 
Or (Format(Now, "d") = 15) Or (Format(Now, "d") = 27) _ 
Or (Format(Now, "d") = 28) Or (Format(Now, "d") = 29) _ 
Or (Format(Now, "d") = 30) Then 
... 

你或許應該拉天數出一個可變第一雖然。

+0

嗨,我試過你的代碼。它仍然在做同樣的(即使條件不滿足彈出MSGBOX) 這是我的新代碼: 昏暗strDate作爲整數 常量D1 = 14 常量D2 = 15 常量D3 = 28 常量D4 = (格式(現在,「d」)= d1)或(格式(現在,「d」)= d2)或(格式(現在,「d」)= d3)如果strDate =或(Format(Now,「d」)= d4)_ 或(Format(Now,「d」)= d5)Then MsgBox「Alert Edwin Jay Sandoval or Maria Consuelo about your salary!」,vbCritical + vbOKOnly,薪水「 結束如果 – user3221896

+0

我看到問題。比較包括「strDate」。我編輯了我的回覆。 – user3358344

+0

找到了答案。 strDate =格式(現在,「d」) 如果strDate = 13或strDate = 14那麼等等。 無論如何,非常感謝你的幫助。我如何關閉此線程? – user3221896

1

您不應該使用Format函數來獲取日期組件。 Format用於返回指定日期的格式化的字符串。通過將字符串轉換爲一個整數來進行比較,VB可以幫助您。使用VB的Day(),Month()Year()函數來提取日期組件。

Dim intDay As Integer 
intDay = Day(Date) 

Select Case intDay 
    Case 13 To 15, 26 To 30 
     ' Match 
    Case Else 
     ' No Match 
End Select