Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

STRG + POS1 per VBA ?

Forumthread: STRG + POS1 per VBA ?

STRG + POS1 per VBA ?
13.01.2008 13:27:34
Selma
Hallo Leute,
ich möchte in allen Arbeitsblätter der Datei die Tastenkombination STRG + POS1 ausführen.
Wie mache ich das per VBA?
Vielen Dank im Voraus.
Liebe Grüße,
Selma

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: STRG + POS1 per VBA ?
13.01.2008 13:35:00
Herby
Hallo Selma,
probiers mal so:

Private Sub CommandButton1_Click()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Application.Goto Reference:=wks.Range("A1")
Next
End Sub


Viele Grüße
Herby

AW: STRG + POS1 per VBA ?
13.01.2008 13:43:35
Selma
Hallo Herby,
das Makro bleibt hier "Application.Goto Reference:=wks.Range("A1")" stehen.
LG
Selma

Anzeige
AW: STRG + POS1 per VBA ?
13.01.2008 14:02:55
Herby
Hallo Selma,
und so ?

Private Sub CommandButton1_Click()
Dim wks As Worksheet
Application.ScreenUpdating = False
For Each wks In ActiveWorkbook.Worksheets
wks.Activate
wks.Range("A1").Activate
Next
Application.ScreenUpdating = True
End Sub


Viele Grüße
Herby

Anzeige
läuft ohne Probleme ..
13.01.2008 17:32:00
Matthias
Hallo Selma
Beide Varianten von Herby laufen bei mir ohne Probleme
Code in die entsprechende Tabelle wo CommandButton1 eingefügt wird 'wenn Steuerelement Button

Option Explicit
Private Sub CommandButton1_Click()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Application.Goto Reference:=wks.Range("A1")
Next
End Sub


Code in ein Modul 'wenn Formular Button


Option Explicit
Sub Schaltfläche1_BeiKlick()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
Application.Goto Reference:=wks.Range("A1")
Next
End Sub


Willst Du immer beim Wechsel in ein Tabellenblatt nach A1 siehe Beitrag von Hajo.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.Goto Reference:=Range("A1")
End Sub
Aber Achtung! das geht nur wenn es sich ausschliesslich um Tabellenblätter handelt.
Ist ein Diagramm dabei, so musst Du erst Abfragen, ob das Blatt ein Sheet oder ein Worksheet ist.
Sonst hängt sich der Code auf.
Userbild

Anzeige
Alles sind Sheets...
13.01.2008 23:29:00
{Boris}
Hi Matthias,
Ist ein Diagramm dabei, so musst Du erst Abfragen, ob das Blatt ein Sheet oder ein Worksheet ist.
Ich weiß zwar was Du meinst, aber ein WorkSheet ist Bestandteil der Sheets-Auflistung - und somit auch ein Sheet. Und ein Diagrammblatt ist ebenfalls ein Sheet.
Die Unterscheidung liefert z.B. der TypeName - Chart respektive Worksheet.
Grüße Boris

Anzeige
Das hab ich aber anders geschrieben ;o)
14.01.2008 18:41:00
Matthias
Hallo Boris
Der Text:
Ist ein Diagramm dabei, so musst Du erst Abfragen, ob das Blatt ein Sheet oder ein Worksheet ist, bezieht sich ja auf das Activate des Sheet und wenn das eben ein Diagramm ist und kein Worksheet, gibts eben einen Fehler(da es die Zelle A1 nicht gibt).
Nur darauf wollte ich hinweisen!
Ist doch eigentlich korrekt formuliert (find ich) ;o)
Ok, ich hätte schreiben können:
Ist ein Diagramm dabei, so musst Du erst Abfragen, ob das Sheet ein Worksheet ist.
Aber wie das gemeint war, weißt Du doch ;o)
Userbild
Userbild

Anzeige
Nochmals
15.01.2008 14:42:00
{Boris}
Hi Matthias,
Deine Formulierung ist falsch - und hat auch mit der Activate-Methode nix zu tun (ich sagte ja: Ich weiß, was Du meintest, aber Du hast es sachlich nicht korrekt formuliert):
Ist ein Diagramm dabei, so musst Du erst Abfragen, ob das Blatt ein Sheet oder ein Worksheet ist...
Ein Blatt ist immer ein Sheet - egal ob Diagrammblatt oder Tabellenblatt.
Die Formulierung muss also lauten:
Ist ein Diagramm dabei, so musst Du erst abfragen, ob es sich um ein Diagrammblatt oder ein Tabellenblatt handelt. Das kann man zum Beispiel mit der TypeName-Eigenschaft erledigen...
Grüße Boris

Anzeige
worksheets.select
13.01.2008 13:53:00
ransi
HAllo Selma
Versuche es mal so:
Option Explicit


Public Sub test()
'Dim alt As Worksheet
'Set alt = ActiveSheet
ThisWorkbook.Worksheets.Select
Worksheets(1).Activate
Range("a1").Select
'alt.Activate
End Sub

ransi

Anzeige
AW: STRG + POS1 per VBA ?
13.01.2008 14:05:00
Hajo_Zi
Hallo Selma,
warum muss man durchgehen, es reicht doch beim aktivieren?

Option Explicit
Private Sub Workbook_Activate()
Application.Goto Reference:=Range("A1")
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Application.Goto Reference:=Range("A1")
End Sub



Anzeige
AW: STRG + POS1 per VBA ?
13.01.2008 18:44:00
Selma
Hallo zusammen,
@Herby
Dein zweiter Code funktioniert.
@Matthias
Bei mir bleibt das Makro immer hier Application.Goto Reference:=wks.Range("A1") hängen.
Ich habe in der Datei keine Diagramme. Kann sein das ich ein oder anderen Verweis einschalten muss?
@ransi
Das Makro bleibt hier ThisWorkbook.Worksheets.Select hängen.
@Hajo
Dein Makro funktioniert auch.
Danke an ALLE !
Liebe Grüße,
Selma

Anzeige
AW: STRG + POS1 per VBA ?
13.01.2008 19:02:53
Gerd
Hallo Selma,
zu:
@ransi
Das Makro bleibt hier ThisWorkbook.Worksheets.Select hängen.
Wohl nur wenn Du Blätter ausgeblendet hast. Oder ?
Gruß Gerd

AW: STRG + POS1 per VBA ?
13.01.2008 19:37:00
Selma
Hallo Gerd,
das stimmt, ich hatte drei ausgeblendete Blätter.
LG
Selma

AW: STRG + POS1 per VBA ?
13.01.2008 19:45:00
Daniel
Hi
dann muss man es so erweitern:

Private Sub CommandButton1_Click()
Dim wks As Worksheet
For Each wks In ActiveWorkbook.Worksheets
 if wks.visible = -1  then Application.Goto Reference:=wks.Range("A1")
Next
End Sub


Gruß, Daniel

Anzeige
AW: STRG + POS1 per VBA ?
13.01.2008 21:52:00
Selma
Hallo Daniel,
vielen Dank!
Also das hat nicht funktioniert, weil ich ausgeblendete Blätter in der Datei hatte. ;)
LG
Selma

AW: STRG + POS1 per VBA ?
13.01.2008 22:39:44
Daniel
Hi
yup, Zellen selektieren kann man immer nur im gerade aktiven Blatt, und ein ausgeblendetes Blatt kann man nicht aktivieren.
Gruß, Daniel
Anzeige
;
Anzeige

Infobox / Tutorial

STRG + POS1 per VBA: So funktioniert's


Schritt-für-Schritt-Anleitung

Um die Tastenkombination STRG + POS1 über VBA auszuführen, kannst du das folgende Makro verwenden. Es aktiviert die Zelle A1 in jedem Arbeitsblatt deiner Excel-Datei.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (dein Arbeitsbuch)" klickst und "Einfügen" > "Modul" auswählst.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub GeheZuA1()
    Dim wks As Worksheet
    For Each wks In ActiveWorkbook.Worksheets
        wks.Activate
        wks.Range("A1").Activate
    Next
End Sub
  1. Um die Funktion auszuführen, kannst du das Makro über das Menü "Makros" starten oder einen Button in deinem Arbeitsblatt erstellen, der dieses Makro ausführt.

Häufige Fehler und Lösungen

  • Makro bleibt beim Aktivieren der Zelle A1 stehen: Dies kann passieren, wenn du ausgeblendete Blätter in deiner Arbeitsmappe hast. Um dieses Problem zu beheben, stelle sicher, dass du die Sichtbarkeit der Blätter überprüfst. Hier ist ein Beispiel, wie du das umsetzen kannst:
Sub GeheZuA1()
    Dim wks As Worksheet
    For Each wks In ActiveWorkbook.Worksheets
        If wks.Visible = xlSheetVisible Then
            wks.Activate
            wks.Range("A1").Activate
        End If
    Next
End Sub
  • Fehler bei Diagrammblättern: Wenn dein Arbeitsbuch Diagrammblätter enthält, könnte der Code beim Zugriff auf A1 fehlschlagen. Überprüfe, ob das Blatt tatsächlich ein Worksheet ist, bevor du es aktivierst.

Alternative Methoden

Es gibt verschiedene Möglichkeiten, die Tastenkombination POS1 zu simulieren:

  1. Workbook_Activate: Du kannst das folgende Event nutzen, um beim Aktivieren eines Arbeitsbuchs immer zu A1 zu springen:
Private Sub Workbook_Activate()
    Application.Goto Reference:=Range("A1")
End Sub
  1. Workbook_SheetActivate: Verwende dieses Event, wenn du beim Wechseln zwischen Blättern zur Zelle A1 springen möchtest:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Application.Goto Reference:=Range("A1")
End Sub

Praktische Beispiele

Hier sind einige Beispiele, wie du die POS1-Taste mithilfe von VBA effektiv nutzen kannst:

  • Button zur Aktivierung: Wenn du einen Button auf deinem Arbeitsblatt hast, kannst du den folgenden Code verwenden, um zu A1 zu springen:
Private Sub CommandButton1_Click()
    Call GeheZuA1
End Sub
  • Automatische Aktivierung beim Blätterwechsel: Füge die oben genannten Events in das ThisWorkbook-Objekt ein, um automatisch zur Zelle A1 zu wechseln, wenn du zwischen den Blättern wechselst.

Tipps für Profis

  • Verwende Application.ScreenUpdating: Um das Flackern des Bildschirms zu reduzieren, setze Application.ScreenUpdating = False am Anfang deines Codes und aktiviere es am Ende wieder.

  • Vermeide Fehler durch Sichtbarkeit: Überprüfe immer die Sichtbarkeit von Blättern, bevor du sie aktivierst, um Laufzeitfehler zu vermeiden.

  • Nutze die TypeName-Funktion: Um sicherzustellen, dass du nur mit Worksheets arbeitest, kannst du die TypeName-Funktion verwenden, um den Typ des Blattes zu überprüfen.


FAQ: Häufige Fragen

1. Warum bleibt das Makro hängen? Das Makro kann hängen bleiben, wenn du ausgeblendete Blätter in deiner Arbeitsmappe hast. Überprüfe die Sichtbarkeit der Blätter, bevor du versuchst, sie zu aktivieren.

2. Wie kann ich das Makro anpassen, um nur bestimmte Blätter zu aktivieren? Du kannst eine Bedingung hinzufügen, um nur bestimmte Blätter zu aktivieren, indem du die If-Anweisung verwendest, um die Sichtbarkeit oder den Namen des Blattes zu überprüfen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige