2015-09-16 2 views
0

Je tente de modifier le code que je dois limiter les résultats copiés à une autre feuille de calcul. En ce moment tout est copié c'est> aujourd'hui. Il compare une date d'expiration dans la colonne H avec la date du jour. Je veux limiter les résultats pour inclure toutes les lignes qui incluent une date d'expiration de> aujourd'hui ET < aujourd'hui + 60 jours. J'ai essayé différentes manières et fonctions comme définir une date de fin et utilisé la fonction DateAdd. Rien ne fonctionne, aidez s'il vous plaît! Je vous remercie!Copie de lignes de critères de plage de dates de réunion de données à l'aide de VBA Excel

Sub SearchForExpiryDate() 

     Dim LSearchRow As Integer 
     Dim LCopyToRow As Integer 

     On Error GoTo Err_Execute 

     'Start search in row 8 
     LSearchRow = 8 

     'Start copying data to row 2 in Expiring MOCs (row counter variable) 
     LCopyToRow = 2 


     While Len(Range("A" & CStr(LSearchRow)).Value) > 0 


      'If value in column H > Today, copy entire row to "Expiring_MOC" 
      If Range("H" & CStr(LSearchRow)).Value > Now() Then 

      'Select row in MOC_MASTER to copy 
      Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select 
      Selection.Copy 

      'Paste row into "Expiring_MOCs" in next row 
      Sheets("Expiring_MOCs").Select 
      Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select 
      ActiveSheet.Paste 

      'Move counter to next row 
      LCopyToRow = LCopyToRow + 1 

      'Go back to 'MOC MASTER' to continue searching 
      Sheets("MOC_MASTER").Select 

      End If 

      LSearchRow = LSearchRow + 1 

     Wend 

     'Position on cell A3 
     Application.CutCopyMode = False 
     Range("A3").Select 

     MsgBox "All matching data has been copied." 

     Exit Sub 

    Err_Execute: 
     MsgBox "An error occurred." 

    End Sub 

Répondre

0

Si la ligne suivante fonctionne sous les anciennes conditions,

If Range("H" & CStr(LSearchRow)).Value > Now() Then 

... changer pour inclure les nouvelles conditions (limite de 60 jours)

If Range("H" & LSearchRow).Value > Now() AND _ 
    Range("H" & LSearchRow).Value < Now() + 60 Then 

La conversion CStr n'était pas complètement nécessaire pour une simple concaténation de chaînes.

+0

Salut Jeeped, merci. J'ai essayé ceci, mais il retourne des rangées contenant des dates d'expiration 1 an à partir de maintenant et pas la gamme désirée de 2 mois. Merci quand même! – kiki

+0

Si tel est le cas, vous pouvez avoir des dates avec échange MDY vs DMY. – Jeeped

+0

'dateadd (" d ", 60, now())' fonctionnerait indépendamment du style de date à la place du 'now() + 60'? –