Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 11:16:26
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Makro auf Arbeitsmappe beschränken

Forumthread: Makro auf Arbeitsmappe beschränken

Makro auf Arbeitsmappe beschränken
alex
Hallo
Ich habbe 2 Arbeitmappen die jeweils unten stehendes Makro benutzen. Das makro blendet Excel mit den Tasten F11 und F12 soweit wie möglich aus bzw. wieder ein. wenn ich erst eine mappe öffne und das makro benutze funktioniert es für diese mappe. Öffne ich die 2. Mappe und benutze das Makro funktioniert es für beide Mappen. Schließe ich jetzt Mappe 2 und benutze das Makro danach. Öffnet Excel automatisch Mappe 2 wieder.
ich weiß leider nicht wie ich das unterbinden kann. habe es schon mit "Option Private Module" versucht, jedoch ohne Erfolg.
für Hilfe wäre ich sehr dankbar
Gruß alex
Private Sub Workbook_Open()
Call Ausblenden 'macro aufrufen mit namen des macros
Application.OnKey "{f11}", "Einblenden" 'funktionstasten mit macros belegen
Application.OnKey "{f12}", "ausblenden"
End Sub

Option Private Module
Sub Ausblenden()
Dim i As Integer 'variable i, integer kann ganze zahlen speichern
Dim blattname As String 'string ist in der lage texte zu speichern (zeichen kette)
blattname = ActiveSheet.Name
On Error Resume Next 'bei einem fehler nächste zeile weitermachen
Application.ScreenUpdating = False 'bildschirmaktualisierung ausschlaten
Application.DisplayFullScreen = True 'setzt die Multifunktionsleiste außerkraft
Application.DisplayFormulaBar = False
For i = 1 To Sheets.Count 'Zählt die tabellen automatisch
Sheets(i).Select
With ActiveWindow
.DisplayHorizontalScrollBar = True
.DisplayVerticalScrollBar = True
.DisplayWorkbookTabs = True
.DisplayGridlines = False
.DisplayHeadings = False
End With
Next i
Sheets(blattname).Select
Application.ScreenUpdating = True 'bildschirmaktualisierung ausschlaten
End Sub
Sub Einblenden()
Dim i As Integer 'variable i, integer kann ganze zahlen speichern
Dim blattname As String
blattname = ActiveSheet.Name
On Error Resume Next 'bei einem fehler nächste zeile weitermachen
Application.ScreenUpdating = False 'bildschirmaktualisierung ausschlaten
Application.DisplayFullScreen = False
Application.DisplayFormulaBar = True
For i = 1 To Sheets.Count 'Zählt die tabellen automatisch
Sheets(i).Select
With ActiveWindow
.DisplayWorkbookTabs = True
.DisplayGridlines = True
.DisplayHeadings = True
End With
Next i
Sheets(blattname).Select
Application.ScreenUpdating = True 'bildschirmaktualisierung ausschlaten
End Sub
Anzeige
ungetestet...
09.02.2010 19:51:42
Tino
Hallo,
versuche es mal so.
Private Sub Workbook_Activate()
Call Ausblenden 'macro aufrufen mit namen des macros
Application.OnKey "{f11}", "Einblenden" 'funktionstasten mit macros belegen
Application.OnKey "{f12}", "ausblenden"
End Sub
Private Sub Workbook_Deactivate()
Application.OnKey "{f11}"
Application.OnKey "{f12}"
End Sub
Habe ich jetzt aber nicht getestet.
Gruß Tino
Anzeige
AW: ungetestet...
09.02.2010 20:10:24
alex
Hi Tino.
Bei deinem Makro tritt leider das Selbe Phänomen wie bei meinem auf.
Mal so nebenbei gefragt was ist eigentlich der Unterschied zwischen Workbook_Open, Auto_Open und Workbook_Acivate?
kann jetzt nicht testen... (Frage offen)
09.02.2010 20:37:31
Tino
Hallo,
Auto_Open macht das gleiche wie Workbook_Open,
Auto_Open wird aber eigentlich nicht mehr verwendet.
Workbook_Activate wird ausgelöst wenn die Datei aus der gleichen Instanz aktiviert wird,
dazu zählt aber auch das öffnen der Datei.
Zu Deinem Problem kann ich jetzt nichts weiter sagen,
weil ich gerade an was anderen arbeite und mein Excel nicht verstellen möchte
daher auch nicht testen mag. (Frage offen)
Gruß Tino
Anzeige
AW: kann jetzt nicht testen... (Frage offen)
09.02.2010 20:44:06
alex
Ok. Aber Danke für die Info
Gruß alex
versuch es mal damit...
10.02.2010 15:40:06
Björn
Hallo,
bau mal folgendes mit ein.
IF Activeworkbook  thisworkbook then exit sub
Statt exit sub kannst du natürlich auch mit Goto zu einer vorher definierten Sprungmarke springen, falls danach noch was ausgeführt werden soll.
Gruß
Björn B.
Anzeige
sorry, falscher Code... .Name vergessen
10.02.2010 15:42:22
Björn
Hallo,
nimm das hier:
If ActiveWorkbook.Name  ThisWorkbook.Name Then Exit Sub
Gruß
Björn B.
AW: sorry, falscher Code... .Name vergessen
10.02.2010 18:23:51
alex
Hi björn.
erstmal danke für deine Antwort. Leider passiert genau das selbe. habe ich die Tastenkombination f11 oder f12 in der 2. mappe benutzt und sie danach geschlossen öffnet sie sich wieder wenn ich die tasten kombination das nächste mal benutze, obwohl tabelle 1 das selbe makro benutzt
gruß alex
Anzeige
AW: sorry, falscher Code... .Name vergessen
10.02.2010 19:26:13
alex
Ja geht bei mir auch. Versteh aber nicht warum das dann mit meinem anderen makro nicht hinhaut.
Anzeige
AW: sorry, falscher Code... .Name vergessen
10.02.2010 19:37:32
alex
Ich muß mich entschuldigen tino. Hab jetzt meinen Fehler entdeckt.
Ich habe das deactivate makro so geschrieben
Private Sub Workbook_Deactivate()
Application.OnKey "{f11}" "Einblenden"
Application.OnKey "{f12}" "Ausblenden"
End Sub
anstatt so
Private Sub Workbook_Deactivate()
Application.OnKey "{f11}"
Application.OnKey "{f12}"
End Sub
Das was du mir gestern gegeben hat, hat also von anfang an funktioniert. Ich habs aber erst gesehen als ich deine beiden makros mit meinen verglichen haben.
sorry nochmal
gruß alex
Anzeige
;
Anzeige

Infobox / Tutorial

Makro auf Arbeitsmappe beschränken


Schritt-für-Schritt-Anleitung

Um ein Makro auf eine bestimmte Arbeitsmappe zu beschränken, kannst Du die folgenden Schritte befolgen:

  1. Öffne den Visual Basic-Editor (VBA):

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge das Makro in das richtige Modul ein:

    • Gehe zu DieseArbeitsmappe und füge den folgenden Code ein:
    Private Sub Workbook_Open()
       Call Ausblenden ' Makro aufrufen
       Application.OnKey "{f11}", "Einblenden"
       Application.OnKey "{f12}", "Ausblenden"
    End Sub
    
    Private Sub Workbook_Deactivate()
       Application.OnKey "{f11}"
       Application.OnKey "{f12}"
    End Sub
  3. Erstelle die Makros zum Ausblenden und Einblenden:

    • Füge die folgenden Sub-Prozeduren hinzu:
    Sub Ausblenden()
       ' Dein Code zum Ausblenden
    End Sub
    
    Sub Einblenden()
       ' Dein Code zum Einblenden
    End Sub
  4. Überprüfe die Bedingungen:

    • Stelle sicher, dass Du die Überprüfung auf die aktive Arbeitsmappe hinzufügst:
    If ActiveWorkbook.Name <> ThisWorkbook.Name Then Exit Sub
  5. Speichern und Testen:

    • Speichere Deine Arbeitsmappe als *.xlsm und teste das Makro.

Häufige Fehler und Lösungen

  • Fehler: Arbeitsmappe öffnet sich automatisch

    • Lösung: Stelle sicher, dass Du im Workbook_Deactivate-Ereignis die Application.OnKey-Anweisungen korrekt gesetzt hast. Der Code sollte so aussehen:
    Private Sub Workbook_Deactivate()
      Application.OnKey "{f11}"
      Application.OnKey "{f12}"
    End Sub
  • Fehler: Makro funktioniert nicht in beiden Mappen

    • Lösung: Überprüfe, ob Du die Bedingung zur Überprüfung der Arbeitsmappe korrekt implementiert hast. Achte darauf, dass Du den Code in der richtigen Arbeitsmappe ausführst.

Alternative Methoden

Eine alternative Möglichkeit besteht darin, die Funktionalität über Formulare oder Steuerelemente zu steuern. Du kannst Schaltflächen in der Arbeitsmappe verwenden, um die Makros auszuführen, anstatt die Funktionstasten zu belegen.

  1. Füge eine Schaltfläche in der Arbeitsmappe hinzu.
  2. Verknüpfe die Schaltfläche mit dem entsprechenden Makro (Ausblenden oder Einblenden).

Praktische Beispiele

Wenn Du die oben genannten Schritte befolgst, wird folgendes Beispiel funktionieren:

  • Du hast ein Makro, das beim Öffnen der Arbeitsmappe ausgeführt wird und die Anzeigeelemente anpasst. So wird die Benutzeroberfläche von Excel optimiert, ohne dass andere Arbeitsmappen beeinflusst werden.
Sub Ausblenden()
    Application.DisplayFormulaBar = False
    ' Weitere Anpassungen...
End Sub

Tipps für Profis

  • Nutze Option Private Module, um zu verhindern, dass andere Arbeitsmappen auf Deine Makros zugreifen.
  • Kommentiere Deinen Code ausführlich, damit Du später leicht nachvollziehen kannst, was jeder Teil des Makros bewirkt.
  • Teste Deine Makros gründlich in verschiedenen Szenarien, um unerwartete Fehler zu vermeiden.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Workbook_Open, Auto_Open und Workbook_Activate? Workbook_Open wird beim Öffnen der Arbeitsmappe ausgeführt, während Auto_Open nicht mehr empfohlen wird. Workbook_Activate wird ausgelöst, wenn die Datei aktiviert wird, was auch das Öffnen der Datei umfasst.

2. Warum funktioniert mein Makro nicht in beiden Mappen? Überprüfe, ob die Bedingungen zur Überprüfung der aktiven Arbeitsmappe korrekt gesetzt sind. Achte darauf, dass der Code nicht in der falschen Arbeitsmappe ausgeführt wird.

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