Lange "Ladezeiten" Excel

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Lange "Ladezeiten" Excel
von: Andreas
Geschrieben am: 20.11.2015 14:36:46

Hallo zusammen,
ich habe in meiner Exceldatei mittlerweile ein paar VBA Codes (eigentlich in zwei Tabellenblättern jeweils die unten stehenden Codes).
Der Code ist jeweils einen ToggleButton zugewiesen und kann "aus-" oder "eingeschalten" werden.
Hier ist der Code:

Private Sub ToggleButton1_Click()
If ToggleButton1 = True Then                        'wenn der Button aktiviert ist
     Application.EnableEvents = False
     'deine Prozedur
         ToggleButton1.Caption = "Zoom aus"      'Beschriftung, wenn aktiv
         ToggleButton1.BackColor = &HC0C0C0           'Farbe, wenn aktiv
 Else                                    '... sonst
     'deine Prozedur
         ToggleButton1.Caption = "Zoom an"      'Beschriftung, wenn inaktiv
         ToggleButton1.BackColor = &HC0C0C0         'Farbe, wenn inaktiv
     Application.EnableEvents = True
 End If
End Sub

Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
    
        ActiveSheet.Range("A1:yx2").EntireRow.RowHeight = 30
        ActiveSheet.Range("A1:yx2").EntireRow.Interior.ColorIndex = xlNone
        ActiveSheet.Range("A1:yx2").EntireRow.Font.Bold = True
        
        ActiveSheet.Range("A3:yx500").EntireRow.Interior.ColorIndex = xlNone
        ActiveSheet.Range("A3:yx500").EntireRow.Font.Bold = False
        Cells.WrapText = True
    'ActiveSheet.Range("A3:yx500").EntireRow.AutoFit
        ActiveSheet.Range("A3:yx500").RowHeight = 15
        'ActiveCell.Rows.RowHeight = ActiveCell.Rows.RowHeight * 3
    'Selection.Range("A3:yx500").EntireRow.AutoFit
        Selection.EntireRow.Interior.ColorIndex = 36
        Selection.EntireRow.Font.Bold = True
        Selection.EntireRow.RowHeight = 45
               
Application.ScreenUpdating = True
End Sub
Der Code bewirkt, dass ich bei Anwahl einer Zelle, die gesamte Zeile "fett" mache, die Zeilenbreite vergrössere und gelb einfärbe. Dies soll dazu dienen, dass ich immer den Überblick behalte wenn ich in einer grossen Tabelle arbeite.
Jetzt muss ich immer häufiger folgendes Problem feststellen:
Egal wie ich mich in dem betroffenen Tabellenblatt bewege (per Mausklick, per Pfeiltasten, ...), die Ladezeit der Ausführung (z.B. nur Anwählen eine Zelle) beträgt 1-2 Sekunden!!
Ich habe in dem betroffenen Tabellenblatt auch eine Matrixformel über 4 Spalten und 100 Zeilen (das andere Tabellenblatt ist nicht betroffen):
=WENNFEHLER(INDEX('Tabelle1!B$2:B$104;KKLEINSTE(WENN('Tabelle1!$H$2:$H$104="X";ZEILE($2:$104)-1); ZEILE(B1)));"") 
Woran könnte es liegen, dass ich solch lange Ladezeiten habe?
Kann man das irgendwie optimieren?
Liebe Grüsse
Andreas
Vielen Dank vorab für eure Unterstützung (wie immer :-))!

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Herbert Grom
Geschrieben am: 20.11.2015 16:01:32
Hallo Andreas,
durch das "Worksheet_SelectionChange"-Ereignis werden bei jedem Zellenwechsel alle in dem betroffenen Sheet vorhandenen Formeln neu berechnet. Wenn dann dort, wie bei Dir, viele Matrixformeln vorhanden sind, geht der Rechner in die Knie. Vielleicht solltest Du die "Automatische Berechnung" auf "manuell" einstellen und nur bei Bedarf mit F9 oder VBA neu berechnen.
Servus

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Werner
Geschrieben am: 20.11.2015 16:43:59
Hallo Andreas,
oder aber für deinen Code das Worksheets bevor Doubleklick Ereignis verwenden und nicht das Selektion Change.
Gruß Werner

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Andreas
Geschrieben am: 20.11.2015 20:27:33
Hallo Herbert und Werner,
vielen Dank für die Rückmeldung.
@Herbert: Wie füge ich den "manuellen" Teil in meinen Code ein? Habe mir diesen aus dem Netz zusammengebaut und bin da nicht wirklich versiert.
@Werner: Selbe Frage an dich.. Wie und wo bette ich das Doppelklick Event ein?
Liebe Grüsse
Andreas

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Werner
Geschrieben am: 20.11.2015 22:05:25
Hallo Andreas,
rechten Mausklick auf den Tabellenblattreiter der Tabelle in der sich der Code auswirken soll. Code anzeigen auswählen. Im Code Fenster Pulldown oben links Worksheet, Pulldown oben rechts BeforeDoubleClick. Den Code zwischen Private Sub und End Sub rein. Hab jetzt aber nur die Farbänderung und Fettschrift drin.
Ohne Gewähr, hab es nur kurz am Tablet runter geklimpert. Wenn es funktioniert dann sollte bei Doppelklick in eine Zelle der Spalte A die ganze Zeile gefärbt und die Schrift fett werden. Zurücksetzen durch erneuten Doppelklick in die Zelle in Spalte A.

If Target.Column > 1 Then Exit Sub 'Doppelklick wirkt sich nur in Spalte A aus
   If Target.Interior.ColorIndex = 36 Then
      With Target.EntireRow
           .Interior.ColorIndex =xlNone
           .Font.Bold = False
      Else
           .Interior.ColorIndex = 36
           .Font.Bold = True
      End With
   End If
Gruß Werner

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Andreas
Geschrieben am: 23.11.2015 07:45:19
Hallo Werner,
habe es gerade ausprobiert. Funktioniert nicht. Es kommt bei Doppelklick zu folgender Meldung:
"Fehler beim Kompilieren: Else ohne If"
Liebe Grüsse
Andreas

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Werner
Geschrieben am: 23.11.2015 08:46:20
Hallo Andreas,
sorry, die Reihenfolge hatte nicht gestimmt. Nimm mal den Code.

If Target.Column > 1 Then Exit Sub 'Doppelklick wirkt sich nur in Spalte A aus
With Target.EntireRow
Cancel = True
    If Target.Interior.ColorIndex = 36 Then
            .Interior.ColorIndex = xlNone
            .Font.Bold = False
       Else
            .Interior.ColorIndex = 36
            .Font.Bold = True
    End If
End With
Gruß Werner

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Andreas
Geschrieben am: 23.11.2015 10:04:49
Hallo Werner,
Code hat sich einbetten lassen - kommt keine Fehlermeldung.
Jedoch passiert eigentlich nichts ausser dass die Zeilenbreite vergrössert wird.
Habe auch schon ausprobiert dieses "Doppelklick-Event" einfach um meinen bisherigen Code zu legen, aber dann passieren auch merkwürdige Dinge (Zelleninhalte werden trotz vorhandener Formel gelöscht - vielleicht wird die Matrixformel zerstört?).
Gibt es keine elegantere Lösung diese Ladezeiten zu umgehen? Wie könnte ich beispielsweise einbauen, dass die Formeln mit STRG+ALT+F9 nur ausgeführt werden? Also manuell aktualisieren.. dann würden die nicht bei jedem Klick in 4 Spalten à 100 Zeilen neu berechnet werden?
Liebe Grüsse
Andreas

Bild

Betrifft: AW: Lange "Ladezeiten" Excel
von: Werner
Geschrieben am: 23.11.2015 10:33:13
Hallo Andreas,
das kann ich jetzt absolut nicht nachvollziehen. Wenn du meinen Code 1:1 übernommen hast dann stellt sich mir die Frage, weshalb bei dir die Spaltenbreite verändert wird, diesbezüglich ist in meinem Code nämlich nichts drin.
Wenn noch nicht geschehen: Deinen bisherigen Code mußt du natürlich Löschen oder auskommentieren.
Meinen Code habe ich bei mir getestet und er funktioniert. Bei Doppelklick in eine Zelle in Spalte A wir geprüft ob die angeklickt Zelle eine gelbe Hintergrundfarbe hat. Wenn nein wird die ganze Zeile gelb gefärbt und die Schrift auf fett gesetzt. Wenn ja dann Wied die Färbung entfernt und die Fettschrift raus genommen.
Gruß Werner

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Bedingte Formatierung etwas komplexer"