Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
860to864
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
860to864
860to864
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

860to864: VBA Datum in Zelle eintragen und sortieren

VBA Datum in Zelle eintragen und sortieren
12.04.2007 19:38:54
Peter aus Berlin

Hallo alle zusammen,
ich lasse über eine Userform ein Datum in die aktivierte Zelle eintragen.
Danach soll die Tabelle (von A6 bis CM2000), chronologisch nach dem Datum, welches in Spalte A steht aufsteigend sortiert werden. Mein Code ändert das Datum in der jeweils aktivierten Spalte sortiert dann aber nicht.


Private Sub cmdOK_Click()
ActiveCell.Value = Me.txtDatum
Unload Me
Range("A6:CM2000").Sort Key1:=Range("A6"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Kann mir jemand helfen?
Danke im Voraus
Grüße aus Berlin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datum in Zelle eintragen und sortieren
12.04.2007 19:45:20
Erich G.
Hallo Peter,
mit
ActiveCell.Value = Me.txtDatum
wird kein Datum, sondern ein Text in die Zelle geschrieben. Nimm stattdessen
ActiveCell.Value = CDate(Me.txtDatum)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: VBA Datum in Zelle eintragen und sortieren
13.04.2007 11:46:18
Peter aus Berlin
Hallo Erich,
funktioniert noch nicht richtig. In Spalte A wird jetzt ein neues Datum eingefügt und auch sortiert. Ich möchte aber ein vorhandenes Datum aus Spalte A verändern und dann die Zeile in der das Datum steht mit allen Werten und Formeln in den dazugehörigen Spalten sortieren. (Spalte A ist schon als Datum formatiert, wenn ich das Datum per Hand ändere und dann den Zellbereich A6 bis CM2000 sortiere funktioniert alles?!) Ich stelle die Datei mal rein.
Ich habe noch drei weitere Problemchen die man gleich mit lösen könnte.
1. Im Moment erscheint die Userform für die Eingabe des Datums nur wenn eine Zelle oder mehrere Zellen oder eine oder mehrere Zeilen mit mindestens einer markierten Zelle aus Spalte A markiert sind. Ich möchte, daß die Userform nur erscheint, wenn wirlich nur eine Zelle also ein Datum aus Spalte A markiert ist. Mein Code:

Private Sub cmbZeile_verschieben_Click()
'Dim Target As Range
If ActiveCell.Column = 1 Then 'Zelle in Spalte A aktiviert
If MsgBox("Wollen Sie diese Zeile verschieben?", vbOKCancel + _
vbQuestion, "Achtung!") = 1 Then
frmEingabe_Zeile_verschieben.Show
End If
Else
MsgBox "Sie haben keine Zeile markiert!"
End If
End Sub
2. Wenn ich eine Zelle markiert habe, dann über eine Schaltfläche "Zeile verschieben" das Makro auslöse verschwindet die Markierung von der ausgewählten Zelle. Ich möchte auch wenn Userform oder MsgBox erscheinen zur Kontrolle das markierte Datum sehen. Mein Code:
Option Explicit

Private Sub cmdAbbrechen_Click()
Unload Me
End Sub


Private Sub cmdOK_Click()
'Range("A:A").Find("", after:=[A6]).Activate
ActiveCell.Value = Me.txtDatum
Unload Me
Range("A6:CM2000").Sort Key1:=Range("A6"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

Private Sub UserForm_Initialize()
Me.txtDatum = ActiveCell.Value
End Sub
3. In der Userform habe ich ein Textfeld in dem ich das Datum eingebe. Bis jetzt kann ich dort auch Text oder alles mögliche eingeben. Man soll dort nur ein Datum korrekt eingeben können, wenn man das nicht korrekt macht soll eine MsgBox erscheinen. Kann man das Textfeld unter eigenschaften schon so formatieren? Wie müßte die Abfrage für die MsgBox bei unkorrekter Eingabe sein?
Datei: https://www.herber.de/bbs/user/41738.xls
PS: nicht wundern, in der Datei sind noch alle möglichen rudimentäre Codes
Danke im Voraus
Grüße aus Berlin

Anzeige
AW: VBA Datum in Zelle ändern, sortieren
13.04.2007 18:40:00
Erich G.
Hallo Peter,
schau dir mal diese Mappe an:
https://www.herber.de/bbs/user/41745.xls
Zu 2. "Wenn ich eine Zelle markiert habe, dann über eine Schaltfläche "Zeile verschieben"
das Makro auslöse verschwindet die Markierung von der ausgewählten Zelle.
Ich möchte auch wenn Userform oder MsgBox erscheinen zur Kontrolle das markierte Datum sehen.":
Das ist nicht so einfach - der Bereich wird ja umsortiert.
Wenn das eingegebene Datum nun in Spalte A mehrfach auftaucht, wird der erste Treffer selektiert.
Außer dem Datum gibt es kein Kennzeichen für die geänderte Zeile,
das ließe sich nur über eine neue Spalte mit eindeutigen Nummern lösen.
Bei dem Button für "Zeile verschieben" habe ich "TakeFocusOnKlick" auf Falsch gestellt.
(sollte man bei CommandButtons fast immer machen)
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA Datum in Zelle ändern, sortieren
14.04.2007 09:49:37
Peter aus Berlin
Hallo Erich,
nachdem man eine Zeile oder Zelle markiert hat, dann auf den Button Zeile verschieben klickt erscheint wie gehabt das Eingabefenster, gibt man dann das neue Datum ein und bestätigt mit OK bleibt das Makro immer an folgender Stelle hängen:
ActiveCell.Value = CDate(Me.txtDatum)
Ich erkenne nicht den Fehler!
zu 2.
da das Makro erst am Ende sortiert müßte man die letzte selectierte Zelle vielleicht über "Last Target" oder "Last Select", wenn es so etwas gibt, finden?!
Was bewirkt "TakeFocusOnKlick" auf Falsch ?
Danke im Voraus
Grüße aus Berlin

Anzeige
AW: VBA Datum in Zelle ändern, sortieren
14.04.2007 10:17:38
Erich G.
Hallo Peter,
wenn CDate(txtDatum) einen Fehler meldet, dann hast du in txtDatum einen Text eingegeben,
den VBA so nicht in ein Datum umwandeln kann. Das wird hier nicht geprüft.
Was genau hast du als "Datum" eingegeben?
Was sollte VBA sich denn merken als "Last Select"? Die Zelladresse nützt nichts,
sie ändert sich beim Sort.
Der (neue) Wert nützt auch nichts - er kann mehrfach auftreten.
Man müsste für die geänderte Zelle ein eindeutiges Kennzeichen setzen,
ähnliches hatte ich schon geschrieben.
Mit "TakeFocusOnKlick" = Falsch bekommt der CommandButton nicht den Focus,
die davor aktive Zelle bleibt aktiv.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA Datum in Zelle ändern, sortieren
14.04.2007 13:30:51
Peter aus Berlin
Hallo Erich,
ich habe deine Datei diesmal nicht direkt aus dem Netz geöffnet sondern erst auf meine Platte gespeichert und schwups, alles funktioniert wie es soll, sogar die ausgewählte Zeile oder Zelle bleibt markiert (liegt natürlich an TakeFocusOnKlick = Falsch). Nur eine Sache könntest du für mich noch machen. Wenn ich das Datum falsch eingebe, z.B. 14.002.07 oder Buchstaben etc. soll eine MsgBox , die auf den Fehler hinweißt und nach OK die Userform für eine erneute Eingabe erscheinen.
Vielen Dank
Grüße aus Berlin

AW: VBA Datum in Zelle ändern, sortieren
14.04.2007 16:17:43
Erich G.
Hallo Peter,
ob du die Mappe direkt vom Forum aus öffnest oder erst auf der Festplatte speicherst,
sollte keine Wirkung auf die Makros haben.
Ich habe mal die UserForm durch Application.InputBox und eine Datumsprüfung ersetzt,
die UF (mit Code) kannst du löschen:


Private Sub cmbZeile_verschieben_Click()
Dim varEin As Variant, bolOK As Boolean
If ActiveCell.Column = 1 And IsDate(ActiveCell) Then 'Zelle in Spalte A aktiviert
If MsgBox("Wollen Sie diese Zeile verschieben?", vbOKCancel + _
vbQuestion, "Achtung!") = 1 Then
While Not bolOK
varEin = Application.InputBox("Datum:", "Bitte neues Datum eingeben", _
Format(ActiveCell, "dd.mm.yyyy"), Type:=1)
If varEin = "Falsch" Then Exit Sub
If CDbl(varEin) >= DateValue("01.01.1880") And _
CDbl(varEin) <= DateValue("31.12.2120") Then bolOK = True
Wend
ActiveCell = CDate(varEin)
Range("A6:CM2000").Sort Key1:=Range("A6"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns(1).Find(CDate(varEin)).Select
End If
Else
MsgBox "Sie haben kein Datum in Spalte A markiert!"
End If
End Sub

Mit den beiden Datumsen hinter "DateValue" kannst du den Gültigkeitsbereich für das Datum eingrenzen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA Datum in Zelle ändern, sortieren
14.04.2007 16:33:03
Erich G.
Hallo Peter,
hier noch eine Version, mit Hinweis-MsgBox bei Falscheingabe:


Private Sub cmbZeile_verschieben_Click()
Dim varEin As Variant, bolOK As Boolean
If ActiveCell.Column = 1 And IsDate(ActiveCell) Then 'Zelle in Spalte A aktiviert
If MsgBox("Wollen Sie diese Zeile verschieben?", vbOKCancel + _
vbQuestion, "Achtung!") = 1 Then
While Not bolOK
varEin = Application.InputBox("Datum:", "Bitte neues Datum eingeben", _
ActiveCell.Text, Type:=1)
If varEin = "Falsch" Then Exit Sub
If CDbl(varEin) >= DateValue("01.01.1880") And _
CDbl(varEin) <= DateValue("31.12.2120") Then
bolOK = True
Else
MsgBox "Sie haben kein gültiges Datum eingegeben!"
End If
Wend
ActiveCell = CDate(varEin)
Range("A6:CM2000").Sort Key1:=Range("A6"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Columns(1).Find(CDate(varEin)).Select
End If
Else
MsgBox "Sie haben kein Datum in Spalte A markiert!"
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: VBA Datum in Zelle ändern, sortieren
16.04.2007 23:22:53
Peter aus Berlin
Hallo Erich,
funktioniert bestens, kann ich die Inputbox auch formatieren (Schriftart, -größe etc-).
Ich arbeite am Ende der Woche wieder am Tool und werde bestimmt einige Probleme nicht selbst lösen können. Für eine weitere Hilfe deinerseits wäre ich sehr dankbar.
Danke nochmal
Grüße aus Berlin

325 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige