Het beperken van Entry van Prior Dates

Als u de gegevens validatie mogelijkheden van Excel gebruiken, kunt u beperken wat er in een cel, gebaseerd op de inhoud van een andere cel. Zo kunt u gemakkelijk te beperken wat er in cel A2 op basis van een datum die in cel A1. Volg deze stappen:

  1. Selecteer cel A2.
  2. Kies Validatie van het menu Data. Excel toont het dialoogvenster Gegevensvalidatie doos.
  3. Zorg ervoor dat het tabblad Instellingen wordt weergegeven. (Zie figuur 1.)

    Het beperken van Entry van Prior Dates

    Figuur 1. Het tabblad Instellingen van het dialoogvenster Gegevensvalidatie doos.

  4. Met behulp van de lijst met drop-down toestaan, kiest Date.
  5. Gebruik van de data keuzelijst, kies Groter dan of gelijk aan.
  6. In de Date doos op Start, typ = A1. Dit vertelt Excel dat de datum groter dan of gelijk aan wat datum in cel A1 zijn.
  7. Klik op OK.

Nu, wanneer je probeert om een ​​datum in cel A2, dat eerder dan de datum in cel A1 is in te voeren, geeft Excel een foutmelding en zal niet toestaan ​​dat de datum in te voeren.

Wat gebeurt er echter als je wilt de data die in cel A1 kan worden ingevoerd te beperken? Bijvoorbeeld, als je de datum 4/1/04 in cel A1, en je wilt er zeker van dat het in A1 ingevoerde volgende datum is niet eerder dan 4/1/04. Als je een datum zoals 4/15/04 in cel A1, zou dat OK, maar dan is de volgende keer dat u een datum in cel A1 in te voeren die u niet wilt dat eerder dan 4/15/04. Met andere woorden, wilt u ervoor zorgen dat cel A1 pas later dan de datum die in A1 kan data.

Dit is een beetje taaier. Als je de bovenstaande stappen, maar selecteer cel A1 in stap 1 te volgen, dan zal gegevensvalidatie niet werken. Waarom? Omdat de datum die u invoert in cel A1 altijd groter dan of gelijk aan de datum die u invoert in de A1-Excel niet te vergelijken met de vorige datum in A1 bij het doen van gegevensvalidatie zal zijn.

De enige manier om te werken door dit probleem is door het gebruik van twee macro. Plaats eerst de volgende macro in een gewone module:

Sub Date_Validation ()
Dim dteDate Als Date
Dim strDate als Koord

Met Range ("A1")
'Memo oorspronkelijke datum
dteDate = CDate (.Text)
'Maak datumtekenreeks
strDate = Format (dteDate, "m \ / d \ / yy")
Met .Validation
'Verwijder oude instellingen
.Delete
'Set nieuwe data validatie
.Add _
Type: = xlValidateDate, _
AlertStyle: = xlValidAlertStop, _
Operator: = xlGreaterEqual, _
Formule 1: = strDate

.IgnoreBlank = False
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = "Ongeldige datum Entry"
.InputMessage = ""
.ErrorMessage = _
"Data is ouder dan de vorige datum (" & _
dteDate & ")."
.ShowInput = True
.ShowError = True
End With
End With
End Sub

Deze macro moet worden aangeroepen door een ander macro, deze geplaatst in de code-venster het werkblad, zodat het elke keer als er een verandering in het werkblad wordt geactiveerd:

Private Sub Worksheet_Change (ByVal Target As Range)
On Error Resume Next
Als Target = Range ("A1") Dan Date_Validation
End Sub

De manier waarop deze macro's werken is echt heel interessant. Omdat u het laatste bericht in code-venster het werkblad te plaatsen, zorgt ervoor dat er elke keer is er een wijziging in het werkblad. Als de cel wordt veranderd, is A1, dan is de Date_Validation macro wordt uitgevoerd.

De Date_Validation macro grijpt de datum van cel A1 en gegevensvalidering regel voor de cel construeert. Dat is alles wat het doet-sets gegevensvalidering regel dat niet zal toestaan ​​dat een datum in de cel die eerder dan de datum die in de cel moet worden ingevoerd.

De schoonheid van de macro is dat zodra de gegevens validatie regel van kracht is, dan is de volgende keer cel A1 wordt gewijzigd, wordt de data validatie regel geactiveerd voordat de Worksheet_Change event wordt afgevuurd. Zo is de data validatie regel zorgt ervoor dat alleen een datum groter is dan de huidige datum kan worden ingevoerd. Zodra de gegevens validatie wordt gewist, dan is de macro zorgt voor de data validatie regel resetten, zodat het zich verhoudt tot de nieuw ingevoerde datum.

ExcelTips is uw bron voor kosteneffectieve Microsoft Excel training. Deze tip (2960) is van toepassing op Microsoft Excel 97, 2000, 2002 en 2003. U kunt een versie van deze tip voor de ribbon-interface van Excel (Excel 2007 en later) vinden hier: Beperking Entry van Prior Data.