Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Uhrzeit und Datum





Frage

Hallo! Ist es in Excel möglich, dass ich nur die Uhrzeit in einer Zelle eingebe, mir aber das dazugehörige Datum mitangezeigt wird? Also bei Eingabe von 22:30 soll 05.06. - 22:30 angezeigt werden. Über das Datumformat zeigt Excel leider 00.01.1900 an. Kann mir jemand helfen? Danke!.

Antwort 1 von KJG17

Hallo Petra,

in Excel erfolgt bei dir die Zählung von Datum und Uhrzeit ausgehend vom 01.01.1900 = '1', der 06.06.08 hat danach den Wert '39605'.

Zeitangaben werden als Dezimalwerte dieser Datumswerte erfasst. Wenn du also nur 22:30 eingibst, entspricht das Excel-Intern dem Dezimalwert 0,9735, also 23:30 Uhr am 00.01.1900.

Für den 06.06.08 23:30 Uhr müsste der hinter Datum+Uhrzeit stehende Dezimalwert 39605,9735 lauten, aber woher sollte Excel das wissen, wenn du mit 23:30 nur die Werte hinter dem Komma eingibst?

Gruß
Kalle

Antwort 2 von nighty

hi all

ein beispiel

gruss nighty

einzufuegen

alt*f11/projektexplorer/deinetabelle

Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Cells(Target.Row, Target.Column) = Date & "-" & Cells(Target.Row, Target.Column)
Application.EnableEvents = True
End Sub


Antwort 3 von schnallgonz

Salvete

@nighty
Liegt es an meinem Steinzeit-Excel97?
Mit Deinem Code wird bei mir z.B. aus 20:21
06.06.2008-0,847916666666667
Erst nach Formatzuweisung funzt es
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Cells(Target.Row, Target.Column).NumberFormat = "dd/mm/jjjj - hh:mm"
Cells(Target.Row, Target.Column) = Date & " - " & Cells(Target.Row, Target.Column)
Application.EnableEvents = True
End Sub
Ergebnis dann 06.06.2008 - 20:21:00

Wie man die Sekundendarstellung abklemmt, weiß ich nicht.
Cells(Target.Row, Target.Column) = Day(Date) & "." & Month(Date) & ". - " & Cells(Target.Row, Target.Column)
bringt zwar das Datum ohne Jahr, aber nur einstellig, trotz Formatzuweisung.

mfg
schnallgonz

Antwort 4 von nighty

hi schnallgonz :-)

die leidige kompatibilitaet :-))

erstellt mit excel 2000 ,zelle als standard formatiert

gut das es noch andere beispiele bzw von dir gibt :-))

gruss nighty

Antwort 5 von Petra0403

Entschuldigung!

Ich habe ein paar Tage nicht nachgesehen und siehe da - ihr ward trotzdem fleißig. Habs gleich mal ausprobiert und ich bin schon fast zufrieden. Schon mal vielen Dank.
Ich dachte aber, dass ich nun über eine Hilfsspalte B (=A1 - wenn in A das Datum mit Uhrzeit steht) diese Spalte B als Zahl formatiere und damit rechnen (Sortieren) kann. Leider zeigt mir nach =A1 in B1 das Datum doppelt an( mit Uhrzeit)

Gruß Petra

Antwort 6 von schnallgonz

Salve Petra,
Du kannst die Datumspalte auch sortieren, ohne sie in einer Hilfspalte als Zahl zu formatieren.
Man sollte aber das Ereignis auf die Spalte beschränken, in welcher die
Uhrzeit eingegeben wird.
Sonst wird bei jeder Eingabe das Datum erneut geschrieben.
Versuch es mal mit diesem Code, falls die Uhrzeit in Spalte A eingegeben wird:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'falls Eingabe in Spalte A
If Target.Column = 1 Then
    Cells(Target.Row, 1).NumberFormat = "dd/mm/jjjj - hh:mm"
    Cells(Target.Row, 1) = Date & " - " & Cells(Target.Row, 1)
End If
Application.EnableEvents = True
End Sub

mfg
schnallgonz

Antwort 7 von Petra0403

Danke Schnallgonz,

Das Sortieren scheint zu klappen. Was mich stört ist das Jahr und die Sekunden, wegen der Spaltenbreite und das ich bei Bedarf kein anderes Datum eingeben kann. Ist da noch was zu machen? Also mein großes Ziel ist es, dass sich die Tabelle
nach den Zeiten in Spalte B automatisch sortiert - aber eben von 05:00 - wieder 05:00 Uhr. Gleichzeitig will ich aber auch Eingaben sparen, also nicht immer das ganze Datum mit eingeben. Steht aber mal ein Datum mit Uhrzeit drin, soll es an folgenden Tagen in der Sortierreihenfolge weiter so bleiben, wie es ist - also sich nicht automatisch am nächsten Tag verändern! Ich bin so froh, dass ihr mir helft.

Antwort 8 von schnallgonz

Hallo,
wie ich schon schrieb, mit Excel97 bekomme ich weder das Jahr noch die Sekunden weg.
Welche Excelversion verwendest Du?

Ein automatisches Sortieren ist schlecht, bei jeder Eingabe oder wie?
Besser per Klick auf einen Button, oder?

Zitat:
Steht aber mal ein Datum mit Uhrzeit drin, soll es an folgenden Tagen in der Sortierreihenfolge weiter so bleiben, wie es ist - also sich nicht automatisch am nächsten Tag verändern
Verstehe ich nicht.
Ein einmal eingetragener Wert verändert sich nicht.

Ein Problem ist, dass Du einen Wert in Spalte A nicht ändern kannst,
deshalb brauchst Du das Ereignis "Datumbeistellung" wahlweise, man muss es per Button ein- und ausschalten können.

Ist gar nicht so schwer:
Du legst eine Umschaltfläche in Deinem Tabellenblatt an
(Symbolleiste "Steuerelement Toolbox")

Dort, wo schon das Worksheet_Change Ereignis steht, kopierst Du folgenden Code:
Private Sub ToggleButton1_Click()
Dim TB As ToggleButton
Set TB = ToggleButton1
   If TB.Value = True Then
   TB.Caption = "HilfeAn"
   DatumHilfeAn
   Else
   TB.Caption = "HilfeAus"
   DatumHilfeAus
   End If
End Sub

In ein normales Modul kopierst Du diese Zweizeiler:
Sub DatumHilfeAn()
Sheets("Tabelle3").Select
Cells(1, 256).Value = 1
End Sub

Sub DatumHilfeAus()
Sheets("Tabelle3").Select
Cells(1, 256).Value = 0
End Sub

Diese schreiben im Wechsel in Zelle IV1 eine 1 für Hilfe an oder eine 0 für Hilfe aus (Du kannst auch eine andere Zelle bestimmen).
Dazu das wie folgt abgewandelte Ereignis
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'falls Eingabe in Spalte A
If Target.Column = 1 And Cells(1, 256).Value = 1 Then
    Cells(Target.Row, 1).NumberFormat = "dd/mm/jjjj - hh:mm"
    Cells(Target.Row, 1) = Date & " - " & Cells(Target.Row, 1)
End If
Application.EnableEvents = True
End Sub

und Du kannst per Knopfdruck die Hilfe ein- und ausschalten.

Problem Jahreszahl und Sekunden ist damit noch nicht gelöst.
Vielleicht geht es in einer neueren Excelversion besser, man
könnte zur Not per VBA die Jahreszahl und die Sekunden löschen.
Das sollte aber eleganter funktionieren.
Siehe meine Antwort3, auch bei entsprechender Formatzuweisung und Code nur für Tag und Monat bringt excel immer das volle Datum.
Heute fällt mir dazu nichts mehr ein
mfg
schnallgonz

Antwort 9 von Petra0403

Hallo!
Ich benutze Excel 2003.
Eine automatische Sortierung bei Eingabe wäre mir am liebsten.
Mit dem Zitat meine ich nur, dass sich das heute eingegebene Datum morgen nicht automatisch mit ändert! Hab ich heute überprüft - es klappt.
Das mit dem "per Button ein- und ausschalten können" verstehe ich nicht so richtig. Willst du damit erreichen: bei "Hilfe ein" sind Änderungen in Spalte A möglich und bei "Hilfe aus" nicht? Klappt dann aber bei mir nicht. Der Button wechselt zwar die Anzeige Hilfe ein/Hilfe aus - aber in der Datei bleibt alles beim Alten. Wenn ich in Spalte A etwas lösche, dann bleibt stur das Datum stehen.
Das Löschen von ganzen Zeilen ist aber auch wichtig. Die abgearbeitete Dinge erhalten eine Endzeit in Spalte B und diese gesamten Zeilen werden dann um 05:00 Uhr des nächsten Tages gelöscht. Anschließend sollen sich die Lücken in der richtigen Sortierreihenfolge wieder schließen.

Gruß Petra

Antwort 10 von schnallgonz

Hallo,
Zitat:
Willst du damit erreichen: bei "Hilfe ein" sind Änderungen in Spalte A möglich und bei "Hilfe aus" nicht?
so soll es sein.
Dass es bei Dir nicht funzt, liegt wahrscheinlich an
Sheets("Tabelle3").Select
Hier musst Du Deinen Blattnamen eintragen.
Das automatische Sortieren nach jeder Eingabe kannst Du selbst einrichten:
Zeichne mit dem Makrorecorder die gewünschte Sortieraktion auf und kopiere diesen Code in das Change-Ereignis in die Zeile nach "End If"
mfg
schnallgonz

Antwort 11 von Petra0403

Danke für die Antwort!

Auf Tabelle 1 hatte ich schon geändert - geht aber trotzdem nicht. Hilfe ein oder aus beim löschen bleibt immer das Datum stehen.

Gruß Petra

Antwort 12 von schnallgonz

Hallo Petra,
erstmal der Code ohne das "Dilettanten-Select" ;-)
Sub DatumHilfeAn()
Sheets("Tabelle1").Cells(1, 256).Value = 1
End Sub

Sub DatumHilfeAus()
Sheets("Tabelle1").Cells(1, 256).Value = 0
End Sub

Bei mir funzt es,
hast Du
If Target.Column = 1 And Cells(1, 256).Value = 1 Then
im Change-Ereignis ergänzt (Antwort8)?

Falls es daran nicht liegen sollte, schick mir eine PN, dann können wir die Datei per mail austauschen, es wird irgendein Übertragungs- oder Eingabefehler sein.
Vertrauliche Daten solltest Du vorher entsorgen.

mfg
schnallgonz

Antwort 13 von Petra0403

Guten Tag du treuer Helfer!
Ich hab mich an Antwort 12 gehalten und jetzt klappt es!
Wenn da nicht die Jahreszahl und die Sekunden wären.
Du hattest die Notvariante mit VBA angedeutet.
Wäre mir eigentlich egal, Hauptsache ich kann die Spaltengröße schön klein halten.
Hilfst du mir?
mfG und Danke

Antwort 14 von Petra0403

Hallo Schnallgonz!

Habe gerade das mit deinem Sortiervorschlag umgesetzt.
Klappt einwandfrei.
Kann ich den Button "HilfeAn" auch verschieben? Ich hab den jetzt an einer ungünstigen Stelle platziert, weil ich dachte, dass ich ihn genau wie den Sortierbutton verschieben kann - geht aber nicht.
Was muß ich ändern, wenn ich statt Spalte A die Spalte B zum Sortieren nehmen möchte.
Weil ich gerade mal beim Fragen bin: Kann man in Excel die Spaltenüberschriften nur einmal (oben) angeben, sie aber auf allen Blätter mit ausdrucken?
Nochmal mfG Petra

Antwort 15 von schnallgonz

Hallo
Zitat:
Ich hab mich an Antwort 12 gehalten und jetzt klappt es!

das ist doch schon mal gut.
Zur Jahreszahl und den Sekunden:
irgendwie macht Excel hier nicht genau das, was man ihm sagt.
Die Sekunden kann man per VBA einfach löschen, die Jahreszahl
zwar auch, aber dann hast Du kein Datum mehr.

Bemerkenswert ist, dass Excel die Eingabe erst als Datum erkennt,
wenn sie quasi erneut bestätigt wird, man also in die Eingabezeile
geht und <<Enter>> drückt.
Simuliert man diese Tasteneingaben, bekommt man das Ergebnis,
das Du möchtest.

Hier der neue Code für das Changeereignis.
Kopiere ihn anstelle des bisherigen und fertig.
(Dem ein oder anderen wird sich der Magen umdrehen, aber bei
mir funzt es)
Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'falls SpalteA aktiv und "IV1" = 1
If Target.Column = 1 And Cells(1, 256).Value = 1 Then
    'Format setzen
    Cells(Target.Row, 1).NumberFormat = "d/m/ h:mm"
    'aktuelles Datum zur Eingabe = Uhrzeit hinzu
    Cells(Target.Row, 1) = Date & " " & Cells(Target.Row, 1)
    'IV1 auf 0, um Zelle zu bestätigen
    Cells(1, 256).Value = 0
    'Focus zurück zur Startzelle; erforderlich, weil
    'Markierung nach Eingabe nach unten verschoben wird = Standard
    ActiveCell.Offset(-1, 0).Activate
    'jetzt Eingabe bestätigen
    SendKeys "{F2}", True
    SendKeys "{ENTER}", True
    'IV1 auf 1 zurückstellen
    Cells(1, 256).Value = 1
End If
Application.EnableEvents = True
End Sub

Noch etwas:
das mit der 1 und 0 in "IV1" ist auch eine Krücke.
falls Du Spalten einfügen willst, geht das nicht, weil dann
der Wert 1 oder 0 in der letzten Spalte steht.
dann müßte man eine Zelle weiter links wählen oder in
einer Hilfstabelle und natürlich den Code auf den neuen Bezug anpassen.

mfg
schnallgonz

Antwort 16 von schnallgonz

Hi,
ich hätte vor dem Antworten aktualisieren sollen...

Der Code aus Antwort 15 bringt das, was Du möchtest,
noch ohne Sortieranweisung.

Zu Deinen 3 letzten Fragen:
Button verschieben
das geht natürlich:
Rechtklick neben eine Symbolleiste, <<Steuerelement-Toolbox>> wählen
in dieser Symbolleiste auf das Dreieck klicken,
jetzt bist Du im Entwurfsmodus, d.h. wenn Du mit der Maus auf den
Button geht, wird der Zeiger zum Kreuz;
draufklicken und verschieben, abschließend Entwurfsmodus beenden
mit erneutem Klick auf das Dreieck

SpalteB anstatt A als Sortierkriterium
Im Code vom Makrorecorder steht u.a.:
Selection.Sort Key1:=Range("A1").......
Anstatt "A1" setzt Du "B1"

Spaltenüberschriften auf jeder Druckseite
Menü <<Datei>> <<Seite einrichten>>
Reiter <<Tabelle>> dort ins Feld <<Drucktitel>> klicken und dann
in die Überschriftenzeile klicken
es erscheint dann $1:$1 falls Du die erste Zeile wählst

Vielleicht sehen die menüs in Excel2003 etwas anders aus,
dann suche nach Drucktitel in der Hilfe

Und nochmal der Tipp
bevor Du mit dem Code experimentierst, Daten zuerst sichern!

mfg
schnallgonz

Antwort 17 von Petra0403

Hi!
Du hast mir echt schon weiter geholfen. Meine Fragen hast du ganz super beantwortet. Ich danke dir sehr dafür.
Leider scheint das mit dem neuen Code nicht ganz zu klappen.
Starte ich meine Datei neu (mit dem neuen Code) und mache ein paar Testeingaben, dann klappt es super, aber sowie ich mal auf meinen Sortierbutton klicke, dann sortiert er alles prima, aber danach erscheint bei einer neuen Zeiteingabe wieder das Datum von 00.01.1900 mit der eingegebenen Zeit. Schließe ich ohne zu speichern und öffne die Datei wieder geht erst alles wieder OK, klicke ich aber zum Beispiel auch auf den HilfeAN/Aus Button ist der Erfolg wieder futsch - auch hier das Datum von 00.01.1900. Siehst du hier noch einen Weg?
Ich hab mich schon so nah an meinem Ziel gesehen. Ohne dich hätte ich das nie hinbekommen.
Kann man die Sortierung vielleicht auch noch automatisch mit einbinden. So das, wenn ich die fertigen Zeilen lösche, die freien Zeilen automatisch wieder verschwinden, bzw. wenn mal eine Sache nachgeschrieben wird (also eine frühere Zeit als die letzte), sie dann automatisch an die richtige Stelle springt?
Aber eigentlich wäre ich auch so schon ganz zufrieden, wenn der obige Fehler nicht mehr auftritt.
Gruß Petra

Antwort 18 von schnallgonz

Hallo Petra,
kein Grund aufzugeben.
Ursache dürfte das Sortieren sein. Die Frage ist, ob die Tabelle Überschriften enthält oder nicht, also ob die Zeile 1 mitsortiert wird oder nicht.
Wird sie mitsortiert, verschwindet auch die 1 aus IV1 und damit wird das Ereignis abgeklemmt, d.h das Datum wird nicht beigestellt siehe Antwort 2
Man kann das Sortieren der ersten Zeile unterbinden, indem man Excel sagt, dass die Tabelle eine Überschrift enthält, siehe fetten Codeabschnitt:
 Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Wie ich sagte, die IV=1 Variante ist eine Krücke.
Hat Deine Tabelle eine Überschrift, sollte es wie beschrieben funktionieren, sonst müßte man den Ein-Ausschalter anders positionieren.
Soll das automatische Sortieren nur bei "Hilfe ein" laufen, füge obige Codezeile vor dem "End If" ein, sonst nach dem "End If" folgendes:
If Target.Column = 1 Then
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End If
Mich persönlich würde das Sortieren nach jedem "Enter" kirre machen: Du änderst z.B. in Zeile 210 etwas und schwupp wird alles sortiert und A210 findet man z.B. in A10, d.h. man hat kaum Gelegenheit, die Eingabe zu kontrollieren.
Aber: jeder Jeck ist anders
Deshalb:
nächster Versuch

mfg
schallgonz

Antwort 19 von Petra0403

Hi treuer Freund!

Ich habe natürlich eine Überschrift (4 Zeilen). Die Tabelle sieht folgendermaßen aus (Spalte A bleibt meist leer, muß aber mitsortiert werden. Sortierkriterium ist die Spalte B in der auch das gewünschte Format erscheinen soll, damit die Sortierung von 05:00 - 05:00 Uhr und auch unter Berücksichtigung verschiedener Tage klappt.)

---B--------C-----D-----E-----F------G-----------H--------------I
Beginn/Ende/Süd/Nord/Ort /Arbeiten/Störungen/Ursachen

Solange in Spalte C keine Endzeit eingetragen ist, wird nur sortiert nach B. Wenn eine Endzeit in C eingetragen wird, soll um 05:00 Uhr die gesamte Datei in ein anderes Verzeichnis zur Sicherung kopiert und danach alle beendeten Zeilen gelöscht werden. Durch das Sortieren - du hast recht automatisch wäre ungünstig - verschwinden dann ja alle Leerzellen und es stehen nur noch Dinge drin, die noch nicht abgearbeitet sind.
Kann man den Hilfe Ein/Ausschalter (IV=1/0) nicht auf ein anderes Tabellenblatt legen, welches dann einfach ausgeblendet wird (zur Sicherheit)?
So richtig komme ich mit deinem letzten Vorschlag nicht klar.
Sowie ich eine Überschrift einfüge ist schon alles vorbei.
Ich schreibe nur in A1 bis I1 etwas hinein und schon ändert sich das Format wieder zu 01.00.1900. wenn ich eine neue Zeit probiere.
Auch ohne Überschrift, wenn ich nur Hilfe Ein/aus betätige - danach geht es nicht mehr?????
Du sagtest nächster Versuch - hab ich noch einen?

Danke
Petra

Antwort 20 von Petra0403

Ich hab den Fehler gefunden!

1. Spalte IV war falsch formatiert - dadurch stand dort immer 01.00.1900 - hab ich auf Standard geändert
2. hast du ja gefunden, aber wie kann ich 3 oder 4 Zeilen Überschrift einschließen? Bei mir klappt nur 1. Ab der 2. Zeile wird die schon mitsortiert.

Ich glaube es geht vorwärts. Dank deiner professionellen Hilfe.

mfG Petra

Antwort 21 von Petra0403

Kleine Bitte zwischendurch.
Ich hätte bei der Uhrzeit gern die Stunde mit führender 0. Jetzt erscheint immer 13.06. - 3:20.? ist das machbar?
Petra

Antwort 22 von schnallgonz

Hallo Petra,
wir machen Fortschritte, freut mich :-)

Deine Zwischendurchbitte:
folgende Zeile sorgt für zweistellige Werte für alles, nichtnur die Uhrzzeit
Soll etwas einstellig werden, einfach einen Buchstaben löschen
d = day m=month h = hour m = minute
Cells(Target.Row, 1).NumberFormat = "dd/mm/ hh:mm"

Zitat:
Kann man den Hilfe Ein/Ausschalter (IV=1/0) nicht auf ein anderes Tabellenblatt legen, welches dann einfach ausgeblendet wird (zur Sicherheit)?

Sehr gute Idee, dann kann man auch "A1" nehmen, das Blatt nenne
ich "Schalter", der Code sieht dann so aus:
Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'falls SpalteA aktiv und Zella "A1" im Blatt "Schalter" = 1
If Target.Column = 1 And Worksheets("Schalter").Cells(1, 1).Value = 1 Then
    'Format setzen
    Cells(Target.Row, 1).NumberFormat = "dd/mm/ hh:mm"
    'aktuelles Datum zur Eingabe = Uhrzeit hinzu
    Cells(Target.Row, 1) = Date & " " & Cells(Target.Row, 1)
    'IV1 auf 0, um Zelle zu bestätigen
    Cells(1, 256).Value = 0
    'Focus zurück zur Startzelle; erforderlich, weil
    'Markierung nach Eingabe nach unten verschoben wird = Standard
    ActiveCell.Offset(-1, 0).Activate
    'jetzt Eingabe bestätigen
    SendKeys "{F2}", True
    SendKeys "{ENTER}", True
    'IV1 auf 1 zurückstellen
    Cells(1, 256).Value = 1
End If
Application.EnableEvents = True
End Sub
Gleichzeitig muss dann auch der Bezug für den Button geändert werden:
Sub DatumHilfeAn()
Sheets("Schalter").Cells(1, 1).Value = 1
End Sub

Sub DatumHilfeAus()
Sheets("Schalter").Cells(1, 1).Value = 0
End Sub


So, bleibt das Thema Sortieren:
Im jetzigen Zustand überläßt Du es Excel, den Datenbereich zu erkennen.
4 Zeilen als Überschrift, da muss man Excel sagen, wo die zu sortierenden Daten liegen.
Du nutzt die Spalten A:I und wieviel Zeilen?

Ich nutze für solche Zwecke Namen, die gewünschten Bereichen zugeordnet werden.
Dazu markierst Du den Datenbereich incl der letzten Überschrift, also Zeile4, die letzte Zeile sollte leer sein (erkläre ich gleich).
Dann Menü <<Einfügen--Namen--Festlegen...>> , ich habe als Namen "DatenZeitSort" gewählt.
Sub DatenSortieren()
'sortiert Bereich "DatenZeitSort" nach Spalte B
Application.Goto Reference:="DatenZeitSort"
    Selection.Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Beim Erweitern der Daten muss beachtet werden, dass der "Datenbankbereich" angepasst wird.
Das geht am einfachsten, wenn vor der Eingabe die letzte Zeile markiert und eine neue Zeile eingefügt wird.
Dadurch wird der benannte Bereich automatisch um eine Zeile erweitert.
Zur Erinnerung könnte man die erste Zeile ausserhalb des benannten Bereichs farblich markieren.

Ich hoffe, ich habe nichts vergessen.
mfg
schnallgonz

Antwort 23 von Petra0403

Schönen guten Tag Schnallgonz!

Erstmal eine Verbeugung - du bist echt Klasse.

Ich glaube wir sind fast am Ziel. Ich habe jetzt eine Zeile Überschrift und die Zeiten, so wie ich sie haben will und nach denen sortiert werden soll, stehen in Spalte A. So klappt alles genau, wie ich mir das gewünscht habe. Du hast es echt drauf.

Mein Wunsch ist aber die Sortierzeiten in Spalte B. Was muß ich ändern um die Spalte zu ändern. Außerdem hab ich noch Probleme mit den 4 Zeilen für die Überschrift. Füge ich 1 Zeile ein kommt der Debugger und die Zeile "ActiveCell.Offset(-1, 0).Activate" ist gelb markiert. Schließe ich den Debugger, hab ich wieder das 1900 Problem.

Das mit den Sortieren geht auch nicht.
Ich markiere den Bereich =Tabelle1!$A$2:$I$200, gehe auf Menü- Einfügen-Namen und habe dann die Möglichkeit Definieren, Einfügen, Erstellen, Übernehmen, Beschriftung. Ich hab mich für Definieren entschieden bei "Namen in der Arbeitsmappe" "DatenZeitSort" eingetragen und meinem Sortierbutton das Makro DatenSortieren zugewiesen. Klicke ich drauf, wird aber nur der Bereich markiert aber nichts sortiert.

Erstmal wünsch ich dir aber ein schönes Wochenende
mfg Petra

Antwort 24 von schnallgonz

Hallo Petra,
erstmal Danke für das Lob,
Leider bin ich gar nicht so klasse, wie Du vielleicht meinst.
Ich habe z.B. bei der Anpassung mit dem Schalter nur eine Codezeile geändert und
2 vergessen...
Abhilfe und Sortierzeiten Spalte B siehe hier:
im fett formatierten Teil stehen die Änderungen;
vorher alle auf 1 für Spalte A, jetzt 2 = B
Private Sub worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'falls SpalteA aktiv und Zelle "A1" im Blatt "Schalter" = 1
If Target.Column = 2 And Worksheets("Schalter").Cells(1, 1).Value = 1 Then
    'Format setzen
    Cells(Target.Row, 2).NumberFormat = "dd/mm/ hh:mm"
    'aktuelles Datum zur Eingabe = Uhrzeit hinzu
    Cells(Target.Row, 2) = Date & " " & Cells(Target.Row, 2)
    'Zelle "A1" im Blatt "Schalter" auf 0, um Zelle zu bestätigen
    Worksheets("Schalter").Cells(1, 1).Value = 0
    'Focus zurück zur Startzelle; erforderlich, weil
    'Markierung nach Eingabe nach unten verschoben wird = Standard
    ActiveCell.Offset(-1, 0).Activate
    'jetzt Eingabe bestätigen
    SendKeys "{F2}", True
    SendKeys "{ENTER}", True
    'Zelle "A1" im Blatt "Schalter" auf 1 zurückstellen
    Worksheets("Schalter").Cells(1, 1).Value = 1
End If
Application.EnableEvents = True
End Sub
Die unterstrichenen Codezeilen sind diejeingen, die
ich vergessen hatte anzupassen, ich hoffe hiermit funktioniert es jetzt.

"DatenSortieren" aus Antwort 22 steht auf Sortieren nach SpalteB.
Stehen dort Werte? Falls noch nicht, dann kann nichts sortiert werden. Oder stimmt die Buttonzuweisung nicht?
Hier nochmal der Code mit einer Schlußzeile, welche die Markierung
nach Makroende aufhebt.
Wenn Du 4 Überschriftenzeilen hast, markiere für die Namenzuweisung nicht A2:I200
sondern A4:I200
Sub DatenSortieren()
'sortiert Bereich "DatenZeitSort" nach Spalte B
Application.Goto Reference:="DatenZeitSort"
    Selection.Sort Key1:=Range("B5"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'B5 auswählen, um Markierung von DatenZeitSort aufzuheben
Range("B5").Select
End Sub

mfg
schnallgonz

Antwort 25 von Petra0403

Hi!
Es ist vollbracht. Ich bin echt zufrieden mit dir. Du warst immer kompetent und immer zuverlässig. Alles klappt wie ich es mir gewünscht habe. Danke, Danke, Danke.
Eine kleine Frage hätte ich aber noch. Wenn ich mal eine Zeit ändern will, erscheint manchmal das Format so, wie ich es will (15.06. 14:11), aber manchmal schiebt sich einfach das Jahr dazwischen (15.06.2008 14:11). Das sprengt dann natürlich die vorgegebene Spaltenbreite. Komisch ist eben, mal geht es und mal geht es nicht (bei gleicher Eingabe).

Aber ich bin auch so sehr zufrieden mit dir.
Schön, dass es Leute, wie dich gibt, die anderen helfen.

Mit freundlichen Grüßen Petra

Antwort 26 von schnallgonz

N'abend,
schön dass ich Dir weiterhelfen konnte.

Manchmal entwickelt Excel Eigenheiten, die sich nach einem Programmneustart geben, vielleicht gehören die merkwürdigen Formatwechsel dazu.
Ich habe gerade alle möglichen Varianten probiert, bei mir tritt kein Formatwechsel auf.
Vielleicht kannst Du mit der Zeit die Ursache eingrenzen, immer
dieselben Zellen, nur bei bestimmten Eingaben usw.

Falls es bei Ausnahmen bleibt, schlage ich für's erste vor, einen weiteren Button anzulegen,
der das gewünschte Format für die gerade markierte Zelle einstellt:
Sub DatumRep()
ActiveCell.NumberFormat = "dd/mm/ hh:mm"
End Sub
Vielleicht hilft es auch, diese Zeile wie folgt im Ereigniscode einzusetzen:
...
'Markierung nach Eingabe nach unten verschoben wird = Standard
ActiveCell.Offset(-1, 0).Activate
ActiveCell.NumberFormat = "dd/mm/ hh:mm"
'jetzt Eingabe bestätigen
...
Damit wird diese Formatzuweisung immer ein 2.mal ausgeführt.

Falls es nochmal hängt, keine Scheu, einfach nochmal fragen, es gab schon längere Threads.
mfg
schnallgonz

Antwort 27 von Petra0403

Guten Abend Schnallgonz!

Ich habe einfach noch mal das Format in der Spalte B auf
TT.MM. hh:mm festgelegt und seitdem hatte ich keine "Ausfälle" mehr. (Hatte ich bestimmt beim Ändern auf Spalte B vergessen.)
Du bist eben doch Klasse.

Ich nutze mal die Chance und stelle dir zwischendurch eine neue Frage:
Wie kann ich ein Formular in Excel verankern, so dass niemand Fremdes Zeilen- und Spaltenbreiten verändern kann? Ich habe mir in Tabelle 1 ein Formular mühevoll (mit vielen Testdrucken) so nachgebildet, dass, wenn ich es auf das fertige Formular drucke, genau die richtigen Zeilen beschrieben werden. (Ich will das eigentliche Formular nicht mitdrucken.) Den Text für die entsprechenden Zeilen habe ich alle aus Tabelle 2 mit "=" und "Sverweis" verknüpft. Leider klappt das nicht auf verschiedenen Rechnern (Druckern). Ich muß für andere den Blattschutz frei lassen, damit eventuell nötige Änderungen vorgenommen werden können.
Geht das auch eleganter?

Auch wenn du mir nicht mehr antworten willst, ich bin dir für deine Hilfe sehr dankbar!

Mit freundlichen Grüßen Petra

Antwort 28 von schnallgonz

Hallo Petra,
"Uhrzeit und Datum" ist also erledigt, sehr schön und vielen Dank für die Rückmeldung.

Für die neue Frage würde ich ein neues Thema aufmachen.

Grundsätzlich kannst Du den Blattschutz u.a. ohne Passwort einrichten. Dann kann jeder Anpassungen vornehmen und versehentliche Änderungen sind ausgeschlossen.
Für die Anpassung an verschiedene Drucker würde ich entsprechende Blätter je Drucker anlegen.

Das so aus der Hüfte geschossen;
für weitere (neue) Fragen zu einem Thema ausserhalb Uhrzeit datum
bitte neues Thema anlegen, damit dies keine Privatveranstaltung wird.

mfg
schnallgonz

Antwort 29 von Petra0403

Hi!
Du hast natürlich vollkommen recht. Ich werde das mal alles neu überdenken und dann neu reinstellen.
Es hat eben einfach so gut geklappt mit dir, da bin ich leichtsinnig geworden ....
Tschüß und noch mal vielen Dank
mfG Petra

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: