2016-06-06 12 views
0

Suche nach einer Lösung für das folgende Problem:Excel VBA - Validierung für Datum und bestimmte Zeichenfolge Eingänge

Ich brauche eine Validierung auf einen bestimmten Bereich in einem Excel-Blatt hinzuzufügen. Die Validierung sollte beliebige Daten und einfache String-Eingaben wie "done" oder "tbc" erlauben.

Ich weiß, wie Sie eine Validierung für Daten nur über VBA hinzufügen, aber ich kann keinen Weg finden, zwei Validierungstypen in einer Zelle zu verwenden.

Gibt es eine Lösung für mein Problem?

Vielen Dank im Voraus

+6

Helfen Sie uns, Ihnen zu helfen, ** posten Sie Ihre aktuellen Code. ** –

+0

Wenn Sie ‚Benutzerdefiniert‘ wählen Sie in der ‚Zulassen‘ Box in der Datenvalidierungsfenster können Sie einfach eine Formel eingeben, die für die erfolgreiche Validierung "TRUE" sein muss. Mit "UND" und "ODER" können Sie einen Datumsbereich einfach validieren und auch definierten Text (wie "TBC") zulassen. Hast du so etwas probiert? – SiHa

+0

Möchten Sie dies mit einer benutzerdefinierten Formel (VBA-Makro), programmgesteuert oder mit Standardformeln tun? –

Antwort

1

Die einfachste Sache, die ich etwas von zu benutzerdefinierten Validierung gehen kann und wie diese Formel etwas zu verwenden:

=OR(ISDATE(RANGE),(LEN(RANGE)<5)) 

Sie können es bearbeiten und mit dem Makro aufzeichnen Recorder ... Oder geben Sie Code, wie vorgeschlagen.

0

danke für die Antworten bisher. Ich würde eine VBA-Lösung bevorzugen. Also habe ich versucht, die Vorschläge von Vityata in VBA zu implementieren und kam auf Folgendes. Ich bekomme jedoch Laufzeitfehler 1004. Irgendwelche Hilfe?

Sub customValidation()

Dim rngCell As Range 


With Tabelle1 

    maxCell = .Cells(.Rows.Count, 1).End(xlUp).Row 

    For Each rngCell In .Range("L11:O" & maxCell) 

     With rngCell.Validation 

      .Delete 
      .Add Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:="=OR(Isdate(rngCell),rngCell=""done"")" 
      .IgnoreBlank = True 
      .InCellDropdown = False 
      .InputMessage = "Enter date or ""done""" 
      .ErrorTitle = "" 
      .InputMessage = "Enter date or ""done""" 
      .ErrorMessage = "" 
      .ShowInput = True 
      .ShowError = True 
     End With 

    Next rngCell 
End With 

End Sub

0

Hier ist ein Beispiel, die Daten oder 'TBC' ermöglicht. In diesem Fall wird ein Spaltenbereich (Teil einer dynamischen Lösung), die

Set rng = wksOpenReview.Range(wksOpenReview.Cells 
    (display_row, ro.lco_sd), wksOpenReview.Cells(lngLastRow, ro.lco_sd)) 
With rng.Validation 
    .Add xlValidateCustom, AlertStyle:=xlValidAlertStop, Formula1:="=OR(
    NOT(ISERROR(DATEVALUE(TEXT(" & rng.Cells(1, 1) 
    .Address(False, True, xlA1) & ",""dd/mmm/yyyy""))))," & 
    rng.Cells(1, 1).Address(False, True, xlA1) & "=""TBC"")"