Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA Gültigkeit Datum

VBA Gültigkeit Datum
31.03.2007 13:02:15
Peter
Hallo alle zusammen,
in Spalte A ab Zelle A6 möchte ich Datums eintragen.
Ich möchte, dass es nur möglich ist, in die Zelle der jeweiligen Spalte, das Datum im Vergleich zur darüberstehenden Zelle gleich oder fortlaufend einzutragen. Wenn man bei der Eingabe einen Fehler macht soll das gleiche Prozedere das man bei "Gültigkeit" durchläuft passieren. (Fenster, neue Eingabe, ok, usw.)
Beispiel:
1. richtig:
A6=30.03.07
A7=30.03.07
A8=31.03.07
usw.
2.falsch
A6=30.03.07
A7=29.03.07
A8=31.03.07
Ich habe versucht das Problem über Gültigkeit zu lösen, habe es leider nicht geschafft.
Für Spalte B soll gleiches gelten.
Kann mir jemand bei der Lösung helfen?
Danke im Voraus
Grüße aus Berlin

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Probier mal ...
31.03.2007 13:38:54
Matthias
Hallo Berliner ;o)
Folgenden Code kannst Du benutzen, mit der Einschränkung das Zelle A1 und Zelle B1 leer bleibt und
auch wirklich Datum in den Zellen steht.
Ansonsten müsste noch eine Fehlerroutine rein. Da bin ich aber jetzt zu knapp dran
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:B")) Is Nothing Then
If ActiveCell.Value  "" And ActiveCell.Offset(-1, 0)  "" Then
If ActiveCell.Value  ActiveCell.Offset(-1, 0).Value + 1 Then MsgBox "Fehler": ActiveCell. _
ClearContents: End
End If
End If
End Sub
Kannst Du damit was anfangen?
Gruß Matthias
Anzeige
noch kleines Problem und ein neues
31.03.2007 21:13:00
Peter
Hallo Matthias,
eine Kleinigkeit müßte noch anders sein.
Im Moment wird die aktive Zelle nach Fehlerhafter Eingabe gelöscht, also nicht die in der die falsche Eingabe steht. (nach Eingabe und Return steht der Cursor eine Zelle weiter unten)
Ich habe versucht den Code anzupassen, funktioniert aber nicht.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:B")) Is Nothing Then
If ActiveCell.Value  "" And ActiveCell.Offset(-1, 0)  "" Then
If ActiveCell.Value  ActiveCell.Offset(-1, 0).Value + 1 Then MsgBox "Fehler": ActiveCell. _
ClearContents: End
End If
End If
End Sub
'was bewirkt eigentlich folgender Teil, ich verstehe: (wenn Inhalt aktiver Zelle größer ist als Inhalt der Zelle darüber +1 dann "Fehler" und Inhalt aktiver Zelle löschen), ergibt für mich keinen Sinn?
If ActiveCell.Value > ActiveCell.Offset(-1, 0).Value + 1 Then MsgBox "Fehler": ActiveCell. _
ClearContents: End
Ich habe noch ein ähnliches Problem, dass man mit einem ähnlichem Code lösen könnte:
WENN folgende Formel erfüllt ist,
=WENN(ODER(UND(N6"");UND(O6>0;AF6="");UND(O6>0;AG6);
UND(Q6"");UND(R6>0;AF6="");UND(R6>0;AG6);
UND(T6"");UND(U6>0;AF6="");UND(U6>0;AG6);
UND(W6"");UND(X6>0;AF6="");UND(X6>0;AG6);
UND(Z6"");UND(AA6>0;AF6="");UND(AA6>0;AG6);
UND(AC6"");UND(AD6>0;AF6="");UND(AD6>0;AG6);
UND(AI6"");UND(AJ6>0;AL6="");UND(AJ6>0;AM6);
UND(AO6"");UND(AP6>0;AU6="");UND(AP6>0;AV6);
UND(AR6"");UND(AS6>0;AU6="");UND(AS6>0;AV6);
UND(AX6"");UND(AY6>0;BD6="");UND(AY6>0;BE6);
UND(BA6"");UND(BB6>0;BD6="");UND(BB6>0;BE6);
UND(BG6"");UND(BH6>0;BS6="");UND(BH6>0;BT6);
UND(BJ6"");UND(BK6>0;BS6="");UND(BK6>0;BT6);
UND(BM6"");UND(BN6>0;BS6="");UND(BN6>0;BT6);
UND(BP6"");UND(BQ6>0;BS6="");UND(BQ6>0;BT6));"Fehlermeldung";"")
dann soll nur ein Fenster mit der Meldung "neuer Fehler" erscheinen. (keine Zellinhalte löschen),
sonst (wenn die Formel nicht erfüllt ist) soll nichts passieren.
Der Code soll alle in der Formel stehenden Zellen (bzw. Spalten) ab Zeile 6 überwachen. In Zeile 1 in den entsprechenden Spalten steht allerdings etwas drin?!
Kannst du mir noch weiterhelfen?
Danke vielmals
Grüße aus Berlin
Anzeige
AW: VBA Gültigkeit Datum
31.03.2007 20:46:17
Peter
Hallo Peter,
mit der ActiceCell von Matthias L. funktioniert es bei mir nicht, aber so:


Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("A6:B65536")) Is Nothing Then
      If Target.Value <> "" And Target.Offset(-1, 0) <> "" Then
         If Target.Value < Target.Offset(-1, 0).Value Then _
            MsgBox "Fehler": Target. _
            ClearContents: End
            If Target.Value > Target.Offset(-1, 0).Value + 1 Then _
               MsgBox "Fehler": Target. _
               ClearContents: End
       End If
    End If
End Sub 


Gruß Peter aus HH
Anzeige
AW: VBA Gültigkeit Datum
31.03.2007 21:23:18
Peter
Hallo Peter aus HH,
danke funktioniert.
Kannst du mir bei einem weiteren ähnliche Problem helfen.
Ich habe es in meiner Antwort auf Matthias geschildert.
Danke im Voraus
Grüße aus Berlin
AW: VBA Gültigkeit Datum
31.03.2007 20:56:00
Peter
Hallo Peter,
so springt die Erfassung in die fehlerhafte Zelle zurück - zur korrigierten Eingabe:


Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("A6:B65536")) Is Nothing Then
      If Target.Value <> "" And Target.Offset(-1, 0) <> "" Then
         If Target.Value < Target.Offset(-1, 0).Value Then _
            MsgBox "Fehler, das Datum ist kleiner !", _
               48, "   Hinweis für " & Application.UserName: _
            Target.ClearContents: Target.Select: End
         If Target.Value > Target.Offset(-1, 0).Value + 1 Then _
            MsgBox "Fehler, das Datum ist zu groß !", _
               48, "   Hinweis für " & Application.UserName: _
            Target.ClearContents: Target.Select: End
       End If
    End If
End Sub 


Gruß Peter aus HH
Anzeige
AW: VBA Gültigkeit Datum
31.03.2007 22:13:31
Josef
Hallo Peter,
das geht aber mit der Gültigkeit ganz einfach.
Gruß Sepp
AW: VBA Gültigkeit Datum
31.03.2007 22:53:00
Matthias
Hallo Sepp
Deine Lösung ist natürlich die idealste Lösung!
Ich war da wohl zu sehr vom Betreff fixiert.
VBA Gültigkeit Datum
Da hatte ich doch sofort ALT+F11 gedrückt ;-) und losgelegt, dabei war die Lösung so nah.
Gruß Matthias
@Matthias
31.03.2007 23:11:22
Josef
Hallo Matthias,
das kenne ich auch nur zu gut.
Man liest VBA und denkt gar nicht mehr an eine Lösung mit Bordmitteln.
Ich bin zwar ein Fan von VBA, aber trotzdem bevorzuge ich immer Lösungen direkt in Excel,
weil diese erstens meist schneller sind und weil man bedenke muss, das in vielen Firmen
VBA aus Sicherheitsgründen nicht zur Verfügung steht.
Gruß Sepp
Anzeige
AW: VBA Gültigkeit Datum
01.04.2007 16:20:30
Peter
Hallo Sepp,
du hast recht, bin irgendwie nicht drauf gekommen.
Danke
Grüße aus Berlin
Warum offen? o.T.
01.04.2007 16:34:56
Josef
Gruß Sepp
Frage beantwortet
01.04.2007 17:07:00
Peter
war aus der Routine ein versehen
Gruß
Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige