Supportnet / Forum / Tabellenkalkulation
Application.Goto Reference:="letzte"
Frage
Grüezi Miteinander
Nachdem mein Makro eine Zeile eingefügt hat, durch sortieren die neue leere Zeile ans untere Ende gestellt hat, sollte der Cursor in dieser letzten neuen Zelle stehen.
Kann mir jemand helfen? Besten Dank.
Arthur
Mein Makro:
ActiveSheet.Unprotect
Rows("4:6").Select
Selection.EntireRow.Hidden = False
Range("B6:E6").Select
Selection.Insert Shift:=xlDown
Range("B5:E5").Select
Selection.AutoFill Destination:=Range("B5:E6"), Type:=xlFillDefault
Range("B5:E6").Select
Rows("5:5").Select
Selection.EntireRow.Hidden = True
Range("B6:E60").Select
Selection.sort Key1:=Range("B6"), Order1:=xlAscending, Key2:=Range("C6") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Range("B11").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Antwort 1 von schnallgonz
Salve Arthur,
wählt in Deinem Listing B11 aus. Lösch´ diese Zeile und schreib:
Damit gehts in die letzte Zeile der Tabelle.
Ansonsten kannst Du mit
die Zeile 5 auch direkt einblenden, das dauernde Select bremst.
Wenn das Makro so kurz bleibt, ist das aber egal.
Mit
wird eine zuvor mit "letzte" benannte Zelle ausgewählt, hat nichts mit der letzten Zeile zu tun.
mfg
schnallgonz
Ich stimme mit der Mathematik nicht überein.
Ich meine, dass die Summe von Nullen eine gefährliche Zahl ist. (S.J. Lec)
Signatur und Textformatierungen wurden mit SNTool V1.2.13 erstellt
Range("B11").Select wählt in Deinem Listing B11 aus. Lösch´ diese Zeile und schreib:
Rows.SpecialCells(xlCellTypeLastCell).Rows.SelectDamit gehts in die letzte Zeile der Tabelle.
Ansonsten kannst Du mit
Rows("5").EntireRow.Hidden = Falsedie Zeile 5 auch direkt einblenden, das dauernde Select bremst.
Wenn das Makro so kurz bleibt, ist das aber egal.
Mit
Application.Goto Reference:="letzte"wird eine zuvor mit "letzte" benannte Zelle ausgewählt, hat nichts mit der letzten Zeile zu tun.
mfg
schnallgonz
Ich stimme mit der Mathematik nicht überein.
Ich meine, dass die Summe von Nullen eine gefährliche Zahl ist. (S.J. Lec)
Signatur und Textformatierungen wurden mit SNTool V1.2.13 erstellt
Antwort 2 von schnallgonz
Nachtrag:
sehe ich gerade, Dein Makro fügt keine ganze Zeile ein, sondern nur in den Spalten B:E und leer sind die auch nicht, sondern werden mit den Werten aus den darüberliegenden Zellen überschrieben.
Damit kann also keine neue leere Zeile ans Ende sortiert werden.
MfG
schnallgonz
sehe ich gerade, Dein Makro fügt keine ganze Zeile ein, sondern nur in den Spalten B:E und leer sind die auch nicht, sondern werden mit den Werten aus den darüberliegenden Zellen überschrieben.
Damit kann also keine neue leere Zeile ans Ende sortiert werden.
MfG
schnallgonz
Antwort 3 von Arthur
Halli Hallo schnallgonz
Besten Dank für Deine "Mitarbeit" ich habe Deinen Vorschlag sofort eingefügt. hat aber leider nicht geklappt, d.h. es hat schon geklappt, aber der Cursor stand dann irgendwo in Zelle "AC:2857"
Ich hab unten meine Tabelle eingefügt, so siehst Du was ich machen will. Ich füge in Zeile 5, Zellen von B5-E5 ein, dann kopiere ich die versteckten leeren aber formatierten Zellen von B:5 - E:5, somit habe ich zuoberst eine leere Linie, dann sortiere ich die Tabelle, dann ist die neue leere Linie für den neuen Eintrag als unterste letzte Linie, dorthin sollte dann der cursor springen.
Tanks und Gruss
Arthur
April Std Total 33:50
Tag Arbeitsbeginn Arbeitsende Arbeitszeit
1. 06:00 07:00 01:00
1. 07:00 12:00 05:00
2. 13:45 17:50 04:05
3. 10:00 18:00 08:00
4. 12:00 17:45 05:45
5. 17:30 02:30 09:00
6. 12:00 13:00 01:00
Hier wird die neue Zeile eingefügt und hier sollte auch der Cursor hinspringen.
Besten Dank für Deine "Mitarbeit" ich habe Deinen Vorschlag sofort eingefügt. hat aber leider nicht geklappt, d.h. es hat schon geklappt, aber der Cursor stand dann irgendwo in Zelle "AC:2857"
Ich hab unten meine Tabelle eingefügt, so siehst Du was ich machen will. Ich füge in Zeile 5, Zellen von B5-E5 ein, dann kopiere ich die versteckten leeren aber formatierten Zellen von B:5 - E:5, somit habe ich zuoberst eine leere Linie, dann sortiere ich die Tabelle, dann ist die neue leere Linie für den neuen Eintrag als unterste letzte Linie, dorthin sollte dann der cursor springen.
Tanks und Gruss
Arthur
April Std Total 33:50
Tag Arbeitsbeginn Arbeitsende Arbeitszeit
1. 06:00 07:00 01:00
1. 07:00 12:00 05:00
2. 13:45 17:50 04:05
3. 10:00 18:00 08:00
4. 12:00 17:45 05:45
5. 17:30 02:30 09:00
6. 12:00 13:00 01:00
Hier wird die neue Zeile eingefügt und hier sollte auch der Cursor hinspringen.
Antwort 4 von schnallgonz
Hallo Arthur,
dann scheint die Zelle AC2857 mal irgendwann verwendet worden zu sein,
es ist also keine "jungfräuliche Tabelle".
Abhilfe gibts trotzdem:
Springt zur letzten Zeile in Spalte A
Soll der Cursor in der letzten Zeile einer anderen Spalte stehen, einfach "A65536" durch "B65536" oder "C65536" usw. ersetzen.
MfG
schnallgonz
dann scheint die Zelle AC2857 mal irgendwann verwendet worden zu sein,
es ist also keine "jungfräuliche Tabelle".
Abhilfe gibts trotzdem:
Range("A65536").End(xlUp).SelectSpringt zur letzten Zeile in Spalte A
Soll der Cursor in der letzten Zeile einer anderen Spalte stehen, einfach "A65536" durch "B65536" oder "C65536" usw. ersetzen.
MfG
schnallgonz
Antwort 5 von Arthur
Lieber/Liebe schnallgonz
Vielen herzlichen Dank für Deine Anteilnahme, leider hat es nicht funktioniert, vermutlich weil ich alles was man/frau nicht sehen soll, hinter ein wunderschönes hellgrau versteckt habe, darum ist die Tabelle auch sehr gross.
Mein Sohn hat mir noch folgenden Tip gegeben, dieser hat vermutlich aus den gleichen Gründen nicht zum Erfolg geführt.
- ActiveSheet.UsedRange.End(xlDown).Offset(1, 0).Activate
Der Befehl tut folgendes:
ActiveSheet: Aktives Blatt
UsedRange: Gibt den benutzen Bereich zurück (z.B. "A1:F32")
End(xlDown): Im Bereich den Cursor in die unterste Zelle setzen (= "A32")
Offset(1, 0): Den Cursor um eine Zelle nach unten verschieben (= "A33")
Activate: Die Zelle markieren
Ich hab mir jetzt mit folgendem "Krampf" geholfen. Das Makro habe ich in zwei Button´s geteilt, 1. Button = Zeilen einfügen. 2. Button = sortieren. Basta, so geht es auch, nicht so komfortabel wie ich gewollt habe, aber mann muss ja nicht immer die Taube auf dem Dach haben wollen. Oder ?
Nochmals besten Dank für Alles und schöne Ostern mit viel Sonnenschein und Schoggihasen.
Arthur
Vielen herzlichen Dank für Deine Anteilnahme, leider hat es nicht funktioniert, vermutlich weil ich alles was man/frau nicht sehen soll, hinter ein wunderschönes hellgrau versteckt habe, darum ist die Tabelle auch sehr gross.
Mein Sohn hat mir noch folgenden Tip gegeben, dieser hat vermutlich aus den gleichen Gründen nicht zum Erfolg geführt.
- ActiveSheet.UsedRange.End(xlDown).Offset(1, 0).Activate
Der Befehl tut folgendes:
ActiveSheet: Aktives Blatt
UsedRange: Gibt den benutzen Bereich zurück (z.B. "A1:F32")
End(xlDown): Im Bereich den Cursor in die unterste Zelle setzen (= "A32")
Offset(1, 0): Den Cursor um eine Zelle nach unten verschieben (= "A33")
Activate: Die Zelle markieren
Ich hab mir jetzt mit folgendem "Krampf" geholfen. Das Makro habe ich in zwei Button´s geteilt, 1. Button = Zeilen einfügen. 2. Button = sortieren. Basta, so geht es auch, nicht so komfortabel wie ich gewollt habe, aber mann muss ja nicht immer die Taube auf dem Dach haben wollen. Oder ?
Nochmals besten Dank für Alles und schöne Ostern mit viel Sonnenschein und Schoggihasen.
Arthur
Antwort 6 von schnallgonz
Hi Arthur,
warum schon aufgeben?
Mit UsedRange gibts immer Probleme, wenn die Datei nicht frisch ist, aber mit
Siehe meine letzte Antwort.
Nachfolgend Dein Code mit meinem Vorschlag in Fett anstelle
MfG
schnallgonz
warum schon aufgeben?
Mit UsedRange gibts immer Probleme, wenn die Datei nicht frisch ist, aber mit
Range("A65536").End(xlUp).Select funzt es!Siehe meine letzte Antwort.
Nachfolgend Dein Code mit meinem Vorschlag in Fett anstelle
Range("B11").Select
ActiveSheet.Unprotect
Rows("4:6").Select
Selection.EntireRow.Hidden = False
Range("B6:E6").Select
Selection.Insert Shift:=xlDown
Range("B5:E5").Select
Selection.AutoFill Destination:=Range("B5:E6"), Type:=xlFillDefault
Range("B5:E6").Select
Rows("5:5").Select
Selection.EntireRow.Hidden = True
Range("B6:E60").Select
Selection.sort Key1:=Range("B6"), Order1:=xlAscending, Key2:=Range("C6") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A65536").End(xlUp).Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End SubMfG
schnallgonz
Antwort 7 von schnallgonz
Oh
habe nicht genau gelesen, Du willst in die erste freie Zelle, dann nimm:
Range("A65536").End(xlUp).Offset(1, 0).Select
also:
Gruß
schnallgonz
habe nicht genau gelesen, Du willst in die erste freie Zelle, dann nimm:
Range("A65536").End(xlUp).Offset(1, 0).Select
also:
ActiveSheet.Unprotect
Rows("4:6").Select
Selection.EntireRow.Hidden = False
Range("B6:E6").Select
Selection.Insert Shift:=xlDown
Range("B5:E5").Select
Selection.AutoFill Destination:=Range("B5:E6"), Type:=xlFillDefault
Range("B5:E6").Select
Rows("5:5").Select
Selection.EntireRow.Hidden = True
Range("B6:E60").Select
Selection.sort Key1:=Range("B6"), Order1:=xlAscending, Key2:=Range("C6") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A65536").End(xlUp).Offset(1, 0).Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
Gruß
schnallgonz

