Gültigkeit von Excel-Zellen (Excel97)

Dieses Thema Gültigkeit von Excel-Zellen (Excel97) im Forum "Microsoft Office Suite" wurde erstellt von klexy, 17. Sep. 2004.

Thema: Gültigkeit von Excel-Zellen (Excel97) Ich steh am Schlauch. Und wenn ich da runtergeh, steh ich auf der Leitung. Ich will, daß im Bereich F3:F301 nur ein...

  1. Ich steh am Schlauch. Und wenn ich da runtergeh, steh ich auf der Leitung.

    Ich will, daß im Bereich F3:F301 nur ein Datum zwischen 01.01.2000 und 31.12.2010 eingegeben werden kann.
    Das mache ich indem ich unter Daten > Gültigkeit die entsprechenden Werte festlege. Funktioniert einwandfrei.

    Weil diese Einschränkung aber in vielen gleichartige Tabellen nachträglich auf den gleichen Zellen gemacht werden soll, habe ich den Makro-Recorder mitlaufen lassen, um das in den anderen Tabellen zu automatisieren.
    Ergebnis:
    Code:
        Range(F3:F301).Select
        Range(F301).Activate
        With Selection.Validation
            .Delete
            .ADD Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=01.01.2000, Formula2:=31.12.2010
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = 
            .ErrorTitle = 
            .InputMessage = 
            .ErrorMessage = 
            .ShowInput = True
            .ShowError = True
        End With
    
    Wenn ich das Makro jetzt auf einer anderen Tabelle laufen lasse, bricht er mir immer in der Zeile
    Code:
            .ADD Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=01.01.2000, Formula2:=31.12.2010
    
    ab.
    Fehlermeldung: Laufzeitfehler->1004' Anwendungs- oder objektdefinierter Fehler


    Bahnhof... :(
     
  2. hi habs auch mal prob.

    bei mir siehts so aus!
    hab aber excel 2000

    ActiveCell.FormulaR1C1 = 1
    ActiveCell.Offset(1, 0).Range(A1).Select
    ActiveWindow.LargeScroll Down:=1
    ActiveCell.Offset(101, 0).Range(A1).Select
    ActiveWindow.LargeScroll Down:=1
    ActiveCell.Offset(33, 0).Range(A1).Select
    ActiveCell.FormulaR1C1 = 1
    ActiveCell.Select
    Range(Selection, Selection.End(xlUp)).Select
    With Selection.Validation
    .Delete
    .Add Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:= _
    xlBetween, Formula1:=1/1/2002, Formula2:=1/31/2002
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle =
    .ErrorTitle =
    .InputMessage =
    .ErrorMessage =
    .ShowInput = True
    .ShowError = True
    End With
    Selection.End(xlUp).Select
    Selection.End(xlUp).Select
    Selection.End(xlUp).Select
    ActiveCell.Offset(2, 0).Range(A1).Select
    End Sub
     
  3. Im Prinzip aber das gleiche, bis auf die amerikanische Datumsformatierung. Entscheidend ist nur zwischen With und End With.
    Hast du das Makro auch über eine andere Tabelle laufen lassen und das Ergebnis überprüft?

    Ich bin mittlerweile auf die Lösung gekommen:
    Code:
            .ADD Type:=xlValidateDate, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=36526, Formula2:=40543
    
    Das sind die Zahlenwerte der entsprechenden Datumsangaben.

    Was aber auch nicht funktioniert ist:
    Code:
            .ADD Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:==(UND(L3=;I3>36526;I3<40543))
    
    Es soll also in Spalte I nichts reingeschrieben werden wenn in Spalte L etwas steht und das Datum außerhalb des genannten Zeitraumes ist.
     
  4. ja ich habs auch über eine andere tabelle laufen lassen!
    hat auch gefunzt
    dieser bereich
    Code:
     .ADD Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:==(UND(L3=;I3>36526;I3<40543))
    
    kommt glaub ich von einer formatierung!!!
     
  5. Hi klexy,

    wenn man die beiden Gültigkeitsdaten auf Datum castet klappts.

    Gruß Matjes :)

    Code:
    Sub mmmmm()
    Dim date1 As Date
    Dim date2 As Date
    
    date1 = 01.01.2000
    date2 = 31.12.2010
    Range(F3:F301).Select
        Range(F301).Activate
        With Selection.Validation
            .Delete
            .Add Type:=xlValidateDate, _
                  AlertStyle:=xlValidAlertStop, _
                  Operator:=xlBetween, _
                  Formula1:=date1, _
                  Formula2:=date2
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = 
            .ErrorTitle = 
            .InputMessage = 
            .ErrorMessage = _
            Datum zulässig:  & date1 &  -  & date2
            .ShowInput = True
            .ShowError = True
        End With
    
    End Sub
    
     
  6. Danke alle beide,

    ich hatte wie gesagt schon eine Hausfrauenlösung gefunden, aber dein Makro hat trotzdem einen Verständnissprung bei mir bewirkt (Dim usw.)
    Ich habe jetzt herausgefunden, daß es bei mir auch mit Datumsangabe funktioniert, aber nur wenn es ein amerikanisches Datumsformat ist und die Trennzeichen Schrägstriche sind (siehe Lösung von Mr_Tom).
    Was seltsam ist, denn Excel zeichnet es ja selbst so auf und will es aber anders ausführen.

    Warum die benutzerdefinierte Gültigkeit mit der Formeleingabe =UND(L3=;I3>36526;I3<40543) per Makroaufzeichnung nicht funktioniert, habe ich aber nicht herausbekommen.

    Zum Glück ist das nur eine Spalte pro Tabelle, die ich jetzt dann halt per Hand mache.

    Moment, mir fällt grad was ein!

    Code:
    Dim schnuppeldibupp As String
    
    schnuppeldibupp = =UND(L3=0;I3>36526;I3<40543)
    
    Range(F3:F301).Select
        Range(F301).Activate
        With Selection.Validation
            .Delete
            .ADD Type:=xlValidateCustom, AlertStyle:=xlValidAlertStop, Operator:= _
            xlBetween, Formula1:=schnuppeldibupp
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = 
            .ErrorTitle = 
            .InputMessage = 
            .ErrorMessage = 
            .ShowInput = True
            .ShowError = True
        End With
    Ne. Funktioniert nicht. Warum?
    War wohl ein Verständnissprung in die Grube.

    Mach ich es halt manuell :'(
     
  7. Hallo klexy,

    'Dim' bedeutet festlegen von Variablen. Im->As Date' ist dann das Format der Variablen beschrieben - eben Date. Wenn man nun eine String 21.02.2004 nimmt und ihn dieser Variablen zuweist, wird der String als Datum interpretiert und der entsprechende Datumswert in die Variable geladen.

    Wenn die Funktion ....Validation.Add mit dieser Variablen vom Format->Date' aufgerufen wird, erkennt sie, dass die Variable vom Typ->Date' ist, und wandelt diesen Werte in das von ihr benötigte Format um.

    Mit dem Typ String scheint diese Erkennung nicht zu klappen.

    Gruß Matjes :)
     
Die Seite wird geladen...

Gültigkeit von Excel-Zellen (Excel97) - Ähnliche Themen

Forum Datum
Excel 2000 Liste Daten Gültigkeit erweitern Microsoft Office Suite 21. Dez. 2011
Windows Genuine Advantage Gültigkeitsprüfungstool (KB892130) nicht installiert Windows XP Forum 9. Sep. 2007
Microsoft Studenten Lizenzen - Gültigkeitsdauer? Windows XP Forum 2. Aug. 2006
Windows Genuine Advantage-Gültigkeitsprüfungstool Windows-Updates 28. Mai 2006
Excel: Gültigkeits-Liste aus Datei importieren? Microsoft Office Suite 14. Okt. 2005