9
votes

Comment trouver la différence entre les dates dans VBA

J'essaie de déterminer la différence entre la date du système et la date stockée dans la feuille de calcul. Si la différence entre eux est> 30 jours, le résultat est vrai, sinon le résultat est faux xxx

Comment puis-je découvrir la différence entre la date du système et la date stockée dans le feuille de travail? La date dans la feuille de calcul peut également être une date passée.


1 commentaires

Comment la valeur de date est-elle stockée dans la feuille de calcul? Ie 1 avr. 2010, 01/30/2010, etc.


3 Réponses :


3
votes

Essayez ceci:

if CDate(Worksheets("dates").Cells(1,1)) - sDate > 30 then


2 commentaires

CDATE (feuilles de calcul ("dates"). Les cellules (1,1)) donne une inadéquation de type!


@Ankur - Oh, SDate doit être une date également. Je vois que c'est une corde. En fait, si vous modifiez SDate à une date, vous n'avez peut-être pas besoin de la distribution de CDTE.



29
votes

Je me demande pourquoi je vois rarement des gens à l'aide des fonctions de date.

Vous pouvez également utiliser ceci: p> xxx pré>

Dans ce cas, date1 serait CDTE (Feuilles de calcul ( "Dates"). Cellules (1,1)) et date2 serait sdate (soit moulue avec CDate ou Dim'D comme une date à laquelle Jeff a dit. P>

"D" signifie que nous obtenons la différence en jours. Voici les intervalles depuis des années, des mois, etc. . Dans VBA: P>

yyyy - Year
q - Quarter
m - Month
y - Day of year
d - Day
w - Weekday
ww - Week
h - Hour
n - Minute
s - Second


0 commentaires

1
votes

sdate est une chaîne, ce qui n'est pas une date réelle!

Convertissez votre chaîne en une date à l'aide de la fonction CDate () ou de la fonction DateValue (). P>

Cependant, il y a une mise en garde dans ce type de conversion. Ces conversions géreront les structures suivantes: p> xxx pré>

Celles-ci ne seront pas correctement converties forte> p> xxx pré>

Et évitez d'utiliser une année à 2 chiffres. P>

Je conseillerais à l'aide de la fonction DATERIAL () pour la conversion de la date. P>

donc en ce qui concerne votre code, en supposant que les valeurs sur la feuille de yor sont En fait des dates (à être certain, sélectionnez simplement la colonne et modifiez le format de numéro en général. S'ils sont des dates réelles, chacun affichera un nombre pur. N'oubliez pas de frapper pour obtenir votre format de date) P>

Dim result As Boolean

If Worksheets("dates").Cells(1, 1).Value - Date > 30 Then
     result = True
Else
     result = False
End If


0 commentaires