online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon easydoor vom 07.06.2021, 22:12 Options

Lösung

Makro soll zu der ehemals aktiven Zelle zurück kehren

Hallo zusammen !

Häufig möchte ich, dass nach Ablauf eines Makros die gleiche Zelle aktiv ist, die zu Beginn des Makros die aktive war. Ich beherrsche aber außer dem Makro-Aufzeichnungsrecorder vor allem nicht das Programmieren von Objekten. Vielleicht kann mir jemand bitte helfen?

Ich stelle mir folgenden Ablauf vor:
- das Makro merkt sich die aktive Zelle,
- erledigt den beabsichtigten Job (z.B. eine Sortierung),
- kehrt zu der ehemals aktiven Zelle zurück und
- gibt den evtl. Speicher-/Variablennamen zu einer erneuten Verwendung wieder frei.

Mit besten Grüßen


Antwort schreiben

Antwort 1 von Hajo_Zi vom 07.06.2021, 22:23 Options

Hallo Nick,
das geht viel einfacher. Benutze im Code nicht select und Activate. Das ist zu 99,9% nicht notwendig.

Gruß hajo

Antwort 2 von Marie vom 08.06.2021, 01:08 OptionsLösung

Lösung
Sub PositionMerken()
    Dim pos
    pos = ActiveCell.Address
    ' tue was anderes
    Range(pos).Select
End Sub


Gruß marie

Antwort 3 von dummy0815 vom 08.06.2021, 10:49 Options

Hallo

Bitte nicht Obige unzulänglichkeit annehmen

'Anhand dieser Beispiele ist gut zu erkennen das das Select vom Makrorecorder oft genutzt wird
'Es wird aber nicht genutzt weil es Sinnvoll wäre,sondern um Fehlerfreiheit zu garantieren
'Es sollte also nach jeder Makroaufnahme das Makro Optimiert werden
'Dazu noch ergänzend das bei größeren Makros die Laufzeit nicht mehr befriedigend ist

Option Explicit
Sub Falsch()
'Curser steht auf C1 und hält nicht die Position
Range("A1").Select
    Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Range("C1").Select
End Sub


Option Explicit
Sub Richtig()
'Curser steht auf C1 und hält die Position
    Range("A1").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub

Antwort 4 von Dummy0815 vom 08.06.2021, 11:53 Options

Hallo

Ein weiteres Beispiel wie sich code verkürzen bzw. Optimieren ließe

Als Beispiel ein Kopie Vorgang ,von Tabelle1 nach Tabelle2

Sub MakroAufnahme()
    Range("A2:A5").Select
    Selection.Copy
    Sheets("Tabelle2").Select
    Range("A2").Select
    ActiveSheet.Paste
    Range("A2").Select
    Sheets("Tabelle1").Select
    Range("A2").Select
    Application.CutCopyMode = False
End Sub

Sub KopieInhalt()
Worksheets(1).Range("A2:A5").Copy Worksheets(2).Range("A2")
Application.CutCopyMode = False
End Sub

Sub KopieWert()
    Worksheets(1).Range("A2:A5").Copy
    Worksheets(2).Range("A2").PasteSpecial Paste:=xlValues, Operation:=xlNone
    Application.CutCopyMode = False
End Sub


Man ist nun erstaunt wie kurz bzw. schnell das Makro nun auf einmal ist

Antwort 5 von easydoor vom 08.06.2021, 12:26 Options

Hallo marie,

Besten Dank für die kompakte und schnelle Lösung.

Viele Grüße
easydoor

Ähnliche Themen

Aktive Zelle einer Spalte soll Makro starten
fedjo  30.11.2007 - 118 Hits - 8 Antworten

makro ausführen bei klick auf zelle
pogmohon  11.12.2007 - 104 Hits - 1 Antwort

Makro soll Zelle auf Zahl prüfen
Stefan_calc  11.01.2008 - 25 Hits - 1 Antwort

Anzeige in Datei mit Start auf Zelle A1 - Makro
finger59  27.01.2009 - 133 Hits - 3 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026