2017-08-16 5 views
2

私はVBAのforループについて質問したいと思います。 現在の日付がCheckDate1,2,3,4の場合、私には思い出させるスクリプトがあります( "思い出させる"はサブ関数です) 5,6 ... 日付を追加する必要があるかどうか尋ねたいですが、ElseIf関数を追加する代わりにforループを使用してCheckDateをすべて含めることはできますか?ループ状態のExcel VBA

私の貧しい人のために申し訳ありませんが、英語とありがとう!

Dim dtmMyDate As Date 

Const CheckDate1 = #1/9/2018# 
Const CheckDate2 = #1/11/2018# 
Const CheckDate3 = #1/16/2018# 
Const CheckDate4 = #1/18/2018# 
Const CheckDate5 = #1/23/2018# 
Const CheckDate6 = #1/25/2018# 

dtmMyDate = DateSerial(Year(Now()), Month(Now()), Day(Now())) 
If dtmMyDate = CheckDate1 Then 
    Remind 
ElseIf dtmMyDate = CheckDate2 Then 
    Remind 
ElseIf dtmMyDate = CheckDate3 Then 
    Remind 
ElseIf dtmMyDate = CheckDate4 Then 
    Remind 
ElseIf dtmMyDate = CheckDate5 Then 
    Remind 
ElseIf dtmMyDate = CheckDate6 Then 
    Remind 
Else 
    NormalCheck 
End If 

答えて

3

このような何かを行うと、より持続可能な次のようになります。

MyDates、たとえば、としてワークシートとDefine a Dynamic Named Rangeにエクセル範囲にあなたの日付をロードし、ワークブックレベルでのスコープを割り当てます。日付を追加または削除するこの方法は非常に簡単です。

Dim vDates as Variant 
vDates = Range("myDates") 

Dim lDate as Long 

For lDate = LBound(vDates) to UBound(vDates) 
    If vDates(lDate,1) = Format(Now,"m/d/yyyy") Then 
     Remind 
     Dim bRemind as Boolean 
     bRemind = True 
     Exit For 
    End If 
Next 

If Not bRemind Then NormalCheck 
+0

どうもありがとうございました:

次にこれはあなたのコードすることができます! ^^ – Jackyson