2017-07-26 1 views
0

Vous cherchez à changer ce Microsoft Word code VBA afin que la date d'expiration est toujours tous les lundis de la semaine, pas une date précise:Microsoft Word VBA Expiration Date

Sub MyMacro() 

ExpirationDate = #6/1/2013# 
If Now() < ExpirationDate Then 

    'Rest of macro goes here 

End if 
End Sub 

Toute réflexion sur la façon de le faire serait great :)

Répondre

1
If Weekday(Date) = 2 Then ... 'Monday 
+0

cela fonctionne très bien. Et si j'avais besoin de courir à une heure précise aussi? Je suis curieux de savoir si cela est possible – MAJ10

+0

Merci pour vos commentaires. Vous pouvez développer l'instruction if avec une vérification de l'heure, comme indiqué dans ce message: [time operations] (https://stackoverflow.com/a/8924251/8355222). Si vous souhaitez démarrer la macro à un moment donné, regardez: [comment planifier une macro Excel] (https://stackoverflow.com/a/8915209/8355222) – user8355222

1
Public Function FindMonday(dt As Date) As Date 
    Do Until WeekdayName(Weekday(dt)) = "Monday" 
    dt = DateAdd("d", 1, dt) 
    Loop 
    FindMonday = dt 
End Function 
0

ExpirationDate = (Date + 7) - (Weekday(Date) - Weekday(vbMonday))

Cette formule renvoie toujours la date de lundi prochain, comme indiqué par "+7" Vous n'avez pas besoin de déclarer la variable Expirationdate.

If Date < (Date + 7) - (Weekday(Date) - Weekday(vbMonday)) Then fera le travail.

Notez que Now renvoie une valeur de date/heure tandis que Date renvoie une date entière. Si le temps est essentiel, vous devrez l'ajouter. Ajoutez 0,5 à la formule ci-dessus pour fixer l'heure d'expiration le lundi suivant, 12 heures.

0

Je généralement utiliser cette fonction:

Public Function PreviousMonday(CurrentDate As Date) As Date 
    PreviousMonday = CurrentDate - Weekday(CurrentDate - 2) 
End Function 

Vous pouvez l'appeler comme:
PreviousMonday(Date()) - retournerait 24/07/2017 si elle a été aujourd'hui (28). PreviousMonday(CDATE("1 July 2017")) - retournerait le 26/06/2017
PreviousMonday(42430) reviendrait le 29/02/2016 (42430 = 1er mars 2016).