Gültigkeit von Excel-Zellen (Excel97)

  • #1
K

klexy

Bekanntes Mitglied
Themenersteller
Dabei seit
04.05.2002
Beiträge
802
Reaktionspunkte
0
Ort
Bayern
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 :)
 
Thema:

Gültigkeit von Excel-Zellen (Excel97)

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben