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

Forumthread: Zoom dynamisch anpassen

Zoom dynamisch anpassen
11.03.2016 12:55:03
Lorenz
Hallo Excel-Cracks ;)
Ich versuche mit folgendem Code den Zoom pro Lasche (Tabellenblatt) festzulegen.
Dafür habe ich das Makro hinter eine Form gelegt. Wird auf die Form geklickt funktioniert das auch einwandfrei.
Problem: Sobald ich unten zwischen den Tabellenblättern hin- und herspringe wird der Zoom nicht automatisch umgestellt.
Wie ändere ich meinen Code, damit er jedes mal z.B bei der Lasche "Hauptmenü" den Zoom wie unten stehend anpasst?
Vielen Dank für eure Hilfe!!
Das hier steht noch über dem Code:
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Const SM_CXSCREEN = 0
Const SM_CYSCREEN = 1
Public wsTemp As Worksheet
Sub OnClick_Übersicht()
Dim intBreit As Integer
Dim intHoch As Integer
Dim strErgebnis As String
intBreit = GetSystemMetrics(SM_CXSCREEN)
intHoch = GetSystemMetrics(SM_CYSCREEN)
strErgebnis = intBreit & "x" & intHoch
Worksheets("HAUPTMENÜ").Select
Range("A1").Select
Select Case strErgebnis
Case "1680x1050"
ActiveWindow.Zoom = 60
Case "1366x768"
ActiveWindow.Zoom = 50
Case "1280x800"
ActiveWindow.Zoom = 50
Case "1024x768"
ActiveWindow.Zoom = 40
Case Else
ActiveWindow.Zoom = 50
End Select
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zoom dynamisch anpassen
11.03.2016 13:08:10
Michael
Hallo Lorenz,
im Tabellenblatt "Hauptmenü" folgenden Code eingeben:
Private Sub Worksheet_Activate()
Call OnClick_Übersicht
End Sub
Wenn du jetzt dieses Tabellenblatt anklickst, wird dein Code ausgeführt.
Gruß
Michael

AW: Zoom dynamisch anpassen
11.03.2016 13:30:52
Lorenz
Hi Michael,
Danke für deine schnell Antwort!
Du rufst mit deinem Code ja nur nochmal mein Makro auf.
Da wird sich ja nicht viel ändern wenn ich das richtig sehe?
Gruß
Lorenz

Anzeige
AW: Zoom dynamisch anpassen
11.03.2016 13:58:51
EtoPHG
Hallo Lorenz,
Wenn ich das richtig sehe, hast du genau das angefragt!
Zitat: Wie ändere ich meinen Code, damit er jedes mal z.B bei der Lasche "Hauptmenü" den Zoom wie unten stehend anpasst?
In Excel magst du ein Profi sein, an der Formulierung des Problem scheint es zu hapern.
Gruess Hansueli

Anzeige
AW: Zoom dynamisch anpassen
11.03.2016 14:01:55
Michael
Hallo Lorenz,
da muss ich Hansueli zu 100 Prozent zu stimmen.
Du muss schon deutlich machen, was du erreichen möchtest, dann kann man dir auch (eventuell) helfen.
Gruß
Michael

AW: Zoom dynamisch anpassen
11.03.2016 14:20:05
Lorenz
Da habt ihr mit Sicherheit recht.
Also ich möchte mein Makro so verändern, dass es jedes mal wenn ich auf die Lasche "Hauptmenü" gehe den Zoom automatisch anpasst.
Im Moment kann der oben angefügte Code NUR den Zoom ändern, wenn ich auf eine Form klicke, an die ich das Makro angehängt habe.
Ich möchte aber auch wenn man unten zwischen den Tabellenblättern wechselt den Zoom automatisch aktualisieren lassen.
Hoffe es ist verständlicher ausgedrückt!
Gruß
Lorenz

Anzeige
AW: Zoom dynamisch anpassen
11.03.2016 14:39:11
Michael
Hallo Lorenz,
ehrlich gesagt, ich verstehe dich immer noch nicht so ganz.
Ich habe irgendwie, das Gefühl, dass du den Code gar nicht ausprobiert hast.
Wenn doch, kann ich nicht nach vollziehen, warum du noch eine Form anklicken muss, da doch durch diesen Code der Zoom automatisch eingestellt wird, sobald man auf das Tabellenblatt "Hauptmenü" klickt.
Gruß
Michael

Anzeige
AW: Zoom dynamisch anpassen
11.03.2016 14:42:05
EtoPHG
Hallo Lorenz,
z.B. mit diesem Code in DieserArbeitsmappe:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case Sh.Name
Case "Tabelle1"
ActiveWindow.Zoom = 100
Case "Tabelle2"
ActiveWindow.Zoom = 110
Case "Tabelle3"
ActiveWindow.Zoom = 120
End Select
End Sub
Gruess Hansueli

Anzeige
AW: Zoom dynamisch anpassen
11.03.2016 14:53:52
Michael
Hallo Hansueli,
wenn Lorenz so etwas haben wollte, dann hat er sich aber nicht ganz so geschickt ausgedrückt :-)
Allerdings lese ich aus seinem ersten Eintrag heraus, dass er den Zoom abhängig von der Einstellung des jeweiligen Monitors machen möchte.
Wenn er dieses für jedes Blatt haben möchte, müsste dein Code angepasst werden:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Select Case strErgebnis
Case "1680x1050"
ActiveWindow.Zoom = 60
Case "1366x768"
ActiveWindow.Zoom = 50
Case "1280x800"
ActiveWindow.Zoom = 50
Case "1024x768"
ActiveWindow.Zoom = 40
Case Else
ActiveWindow.Zoom = 50
End Select
End Sub
Hoffe doch, dass wir ihm jetzt helfen konnten
Gruß
Michael
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Zoom-Anpassung in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um den Zoom in Excel dynamisch anzupassen, kannst du den folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, den Zoom abhängig von der aktiven Tabelle oder dem Bildschirmformat einzustellen.

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Füge den Code ein: Gehe zu DieserArbeitsmappe und füge den folgenden Code ein:

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
       Select Case Sh.Name
           Case "HAUPTMENÜ"
               ActiveWindow.Zoom = 100 ' Beispiel für einen festen Zoom
           Case "Tabelle1"
               ActiveWindow.Zoom = 60
           Case "Tabelle2"
               ActiveWindow.Zoom = 50
           Case Else
               ActiveWindow.Zoom = 100 ' Standard-Zoom
       End Select
    End Sub
  3. Speichere deine Arbeit und schließe den VBA-Editor.

  4. Teste den Code: Wechsle zwischen den Tabellenblättern, um die Zoom-Anpassungen zu überprüfen.


Häufige Fehler und Lösungen

  • Fehler: Zoom ändert sich nicht beim Tab-Wechsel

    • Lösung: Stelle sicher, dass der obige Code in DieserArbeitsmappe korrekt implementiert ist.
  • Fehler: Code läuft nicht

    • Lösung: Überprüfe, ob du die Makros in Excel aktiviert hast. Gehe zu Datei > Optionen > Sicherheitszentrum > Einstellungen für das Sicherheitszentrum > Makroeinstellungen.

Alternative Methoden

Eine alternative Methode zur dynamischen Zoom-Anpassung ist die Verwendung des Worksheet_Activate() Ereignisses. Hier ist ein einfaches Beispiel:

Private Sub Worksheet_Activate()
    ActiveWindow.Zoom = 100 ' Setzt den Zoom auf 100%
End Sub

Du kannst diesen Code in jedes Arbeitsblatt einfügen, um den Zoom automatisch anzupassen, wenn das entsprechende Blatt aktiviert wird.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den ActiveWindow.Zoom effektiv nutzen kannst:

  1. Zoom basierend auf Bildschirmauflösung:

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
       Dim strErgebnis As String
       strErgebnis = Screen.Width & "x" & Screen.Height
    
       Select Case strErgebnis
           Case "1680x1050"
               ActiveWindow.Zoom = 60
           Case "1366x768"
               ActiveWindow.Zoom = 50
           Case Else
               ActiveWindow.Zoom = 100
       End Select
    End Sub
  2. Zoom für spezifische Tabellenblätter:

    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
       If Sh.Name = "HAUPTMENÜ" Then
           ActiveWindow.Zoom = 100
       Else
           ActiveWindow.Zoom = 80
       End If
    End Sub

Tipps für Profis

  • Verwende vba zoom: Achte darauf, dass du die richtige Syntax für ActiveWindow.Zoom verwendest, um Fehler zu vermeiden.
  • Automatisiere den Prozess: Du kannst auch kombinierte Bedingungen nutzen, um den Zoom noch flexibler zu gestalten, z.B. abhängig von der Kombination von Bildschirmauflösung und Blattname.
  • Testen und Anpassen: Teste deine Zoom-Einstellungen auf verschiedenen Bildschirmen, um sicherzustellen, dass sie überall gut aussehen.

FAQ: Häufige Fragen

1. Wie kann ich den Zoom für alle Arbeitsblätter einstellen? Du kannst den Code in DieserArbeitsmappe nutzen, um den Zoom für alle Blätter dynamisch anzupassen, wie im obigen Beispiel.

2. Funktioniert dieser Code in Excel 2016? Ja, der Code funktioniert in allen neueren Versionen von Excel, einschließlich Excel 2016 und Excel 365.

3. Was ist der Unterschied zwischen ActiveWindow.Zoom und zoom vba? ActiveWindow.Zoom ist der spezifische Befehl, um den Zoom des aktiven Fensters einzustellen, während zoom vba eine allgemeine Bezeichnung für alle Zoom-bezogenen Befehle in VBA ist.

4. Wie kann ich den Zoom auf 100% zurücksetzen? Verwende einfach den Befehl ActiveWindow.Zoom = 100 in deinem Code, um den Zoom auf 100% zurückzusetzen.

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