Nach Ende des VBA-Makros Zelle A1 anzeigen - Fenster fixiert
Hallo,
ich möchte, dass trotz fixiertem Fenster (bspw. in D7) nach Ablauf eines Makros in die Zelle A1 gesprungen und diese auch angezeigt wird.
Angenommen, am Ende des VBA-Codes steht der Cursor in Zelle Z100. Das Fenster ist wie gesagt auf Zelle D7 fixiert. Wenn ich jetzt A1 selektiere oder aktiviere, passiert nichts. Ich möchte aber, dass ich ganz nach oben links - also A1 - springe und auch die Folgezeilen ab der Fensterfixierung - also ab Zeile 7 - sehe.
Hat jemand eine Idee?
Danke, Gruß
Jojo
Antwort schreiben
Antwort 1 von Saarbauer vom 07.05.2020, 13:43 Options
Hallo,
schon mit
Range("a1").Select
in deinem Makro probiert?
Gruß
Helmut
Antwort 2 von Hajo_Zi vom 07.05.2020, 14:08 Options
Hallo Jojo,
solche Probleme umgeht man.
Excel ist ein vielseitiges Programm und man kann viele Probleme damit lösen. Jede positive Seite hat aber auch negative Aspekte - einer davon ist im Makrorecorder enthalten.
Die Bücher, die es zu Excel VBA gibt, erklären viele Funktionen, aber ich habe bisher nur in einem gelesen, dass der vom Makrorecorder aufgezeichnete Code bereinigt werden muss.
Der Makrorecorder zeichnet alle Aktionen auf, u. a. auch das Auswählen einer Zelle oder eines eingebetteten Objektes (Bild, Diagramm, Zeichnungsobjekt usw.) – dabei wird generell Select und Activate aufgezeichnet. Diese Befehle sind in VBA zu 99,9% nicht notwendig. Sie lassen den Bildschirm flackern und senken die Geschwindigkeit bei der Ausführung des Codes. Man sollte also schon von Beginn an bei der Programmierung darauf achten, solche Befehle zu vermeiden. Meine Erfahrung mit dem Vorsatz: „Das mache ich später“ ist, man schreibt das Programm später meist komplett neu. Also kostest es nicht nur Rechnerzeit sondern auch Deine Zeit und ist Dir Deine Zeit so wenig Wert?
Zum Vergleich mit und ohne Select schau Dir auch mal diese Beispielarbeitsmappe an:
ohne select Auf meiner Homepage sind alle meine Beispiele ohne Select. Da kann man sich also einige Lösungsansätze zu diesem Thema ansehen.
Gruß Hajo
Antwort 3 von jojo5 vom 07.05.2020, 14:31 Options
Hallo,
danke für eure Antworten. Den Select-Befehl habe ich natürlich schon probiert - erfolglos.
Hajo, Dein link "ohne select" zeigt leider auf eine ungültige Seite. Kannst Du den bitte aktualisieren?
Danke, Gruß
Jojo
*Threadedit* 14:34:19, 07.05.2008
Admininfo: Link in A2 korrigiert
Antwort 4 von Hajo_Zi vom 07.05.2020, 14:38 Options
Hallo JoJo,
ich habe es gerade getestet, es geht. Sind vielleicht ZIP Dateien geblockt. Die Datei ist nur ein Zeitvergleich zwischen mit select und ohne select.
Gruß Hajo
Antwort 5 von jojow vom 07.05.2020, 16:29 Options
Hallo Hajo,
danke - jetzt konnte ich das file aufrufen. Mein eigentliches Problem wird dadurch aber leider nicht gelöst. Die Positionierung auf A1 funktioniert bei mir prinzipiell auch.
Die Kunst ist aber, dass es auch bei einem fixierten Fenster geht. Zur Not müsste ich die Fixierung zunächst entfernen, dann auf A1 springen und dann die Fixierung wieder setzen. Aber das wäre nur ein workaround.
Vielleicht hat doch noch jemand eine Idee, wie das bei fixiertem Fenster funktioniert ...
Trotzdem danke, Gruß
Jojo
Antwort 6 von finger59 vom 07.05.2020, 16:47 Options
Hi Jojo,
versuche mal diesen Befehl in Dein Makro einzubauen.
Application.SendKeys ("^{POS1}")
In diesem Sinne... have a nice Day... Gruß Helmut
Antwort 7 von Hajo_Zi vom 07.05.2020, 16:52 Options
hallo Jojo,
wenn Du also in Deiunem Code meinen Tip beachtet hast und kein select usw. eingesetzt hast, warum mußt Du dann noch auf A1 springen. Der Bildschirm sieht doch genauso aus wie bei Makrostart.
Gruß Hajo
Antwort 8 von Kauz vom 07.05.2020, 19:44 Options
Hallo jojo...
versuch es mal mit zwei Sprüngen:
Erst auf die erste Zeile unterhalb der Fixierung, und danach zu <A1>:
Application.Goto Reference:=Sheets("Tabelle1").Cells(7, 4), Scroll:=True
Application.Goto Reference:=Sheets("Tabelle1").Cells(1, 1), Scroll:=True
ODER hiermit:
ActiveWindow.ScrollRow = 7
Application.Goto Reference:=Sheets("Tabelle1").Cells(1, 1), Scroll:=True
Gruß
Andreas
Antwort 9 von jojo5 vom 08.05.2020, 15:34 Options
Hallo,
danke - der Befehl
"Application.Goto Reference:=Sheets("Tabelle1").Cells(1, 1), Scroll:=True"
ist genau das, wonach ich gesucht habe (und dieser eine Befehl reicht auch aus).
@ Hajo: Das Makro wird mit einem Buttonklick gestartet. Der Button ist jedoch nicht für alle sofort sichtbar. D.h. die "Wissenden" müssen zu der Spalte scrollen, in der der Button ist und das Makro dann starten. Nach Beendigung des Makros soll der Button aber nicht mehr sichtbar, sondern A1 ausgewählt sein.
Viele Grüße
Jojo