Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1440to1444
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Tab.blätter während VBA-Prozess stilllegen?

VBA: Tab.blätter während VBA-Prozess stilllegen?
22.08.2015 21:21:54
Joerschi
Hallo liebes Forum,
eine allgemeine Frage zu VBA-Prozessen:
Ist es möglich, bei der Abarbeitung eines VBA-Prozesses in dessen Code zu verankern, dass bestimmte Tabellenblätter NICHT mit berechnet werden sollen (bzw. ruhen)?
Wenn ja, wie?
Grund hierfür ist, dass in dem Dokument sehr rechenintensive Tabellenblätter drin sind, die aber mit den Berechnungen des VBA-Prozesses nichts zu schaffen haben (also die Berechnungen in diesen Tab.blättern ruhen können).
Die würde ich gern während des Prozesses "stillegen"/deaktivieren.
Viele Grüße
Joerschi

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA: Tab.blätter während VBA-Prozess stilllegen?
22.08.2015 21:54:13
Nepumuk
Hallo,
über die EnableCalculation - Eigenschaft ist das möglich.
Public Sub Beispiel()
    
    Dim avntArray As Variant, iavntItem As Variant
    
    avntArray = Array("Tabelle1", "Tabelle2", "Tabelle3")
    
    For Each iavntItem In avntArray
        Worksheets(iavntItem).EnableCalculation = False
    Next
    
    'Dein Code
    
    For Each iavntItem In avntArray
        Worksheets(iavntItem).EnableCalculation = True
    Next
End Sub

Gruß
Nepumuk

Anzeige
AW: VBA: Tab.blätter während VBA-Prozess stilllegen?
22.08.2015 22:04:01
Joerschi
Dank Dir Nepumuk,
da ich ein absoluter Anfänger in VBA bin, nochmal als Nachfrage:
So sieht aktuell mein Code aus
(der Prozess läuft mir auch zu langsam und vielleicht kann man den optimieren, aber die Nachfrage ich wohl ein anderes Mal als Thread eröffnen):
Sub Test123_1()
Application.ScreenUpdating = False
With Sheets("aktWo_Wahl")
For i = .Cells(11, 276) To .Cells(11, 277)
.Cells(12, 276) = i
.Range("aid1:aih3000").Copy
With Sheets("xyz")
.Cells(2, Columns.Count).End(xlToLeft) _
.Offset(-1, IIf(.Range("a1") = "", 0, 6)).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End With
Next i
End With
Application.Goto Sheets("xyz").Range("A1"), True
End Sub
In Deinen Vorschlag eingebunden wäre dies dann so:
Public Sub Beispiel()
Dim avntArray As Variant, iavntItem As Variant
avntArray = Array("Tabelle1", "Tabelle2", "Tabelle3")
For Each iavntItem In avntArray
Worksheets(iavntItem).EnableCalculation = False
Next
Sub Test123_1()
Application.ScreenUpdating = False
With Sheets("aktWo_Wahl")
For i = .Cells(11, 276) To .Cells(11, 277)
.Cells(12, 276) = i
.Range("aid1:aih3000").Copy
With Sheets("xyz")
.Cells(2, Columns.Count).End(xlToLeft) _
.Offset(-1, IIf(.Range("a1") = "", 0, 6)).PasteSpecial xlPasteValues
Application.CutCopyMode = False
End With
Next i
End With
Application.Goto Sheets("xyz").Range("A1"), True
End Sub
For Each iavntItem In avntArray
Worksheets(iavntItem).EnableCalculation = True
Next
End Sub
Richtig?
Danke vorab und liebe Grüße
Joerschi

Anzeige
VBA: Tab.blätter während VBA-Prozess stilllegen?
23.08.2015 06:32:23
Nepumuk
Hallo,
so sollte es funktionieren:
Option Explicit

Public Sub Test123_1()
    
    Dim avntArray As Variant, iavntItem As Variant
    Dim i As Long
    
    avntArray = Array("Tabelle1", "Tabelle2", "Tabelle3") 'Anpassen !!!
    
    For Each iavntItem In avntArray
        Worksheets(iavntItem).EnableCalculation = False
    Next
    
    Application.ScreenUpdating = False
    With Sheets("aktWo_Wahl")
        For i = .Cells(11, 276) To .Cells(11, 277)
            .Cells(12, 276) = i
            .Range("aid1:aih3000").Copy
            With Sheets("xyz")
                .Cells(2, Columns.Count).End(xlToLeft) _
                    .Offset(-1, IIf(.Range("a1") = "", 0, 6)).PasteSpecial xlPasteValues
                
            End With
        Next i
    End With
    
    For Each iavntItem In avntArray
        Worksheets(iavntItem).EnableCalculation = True
    Next
    
    With Application
        .CutCopyMode = False
        .Goto Sheets("xyz").Range("A1"), True
        .ScreenUpdating = True
    End With
End Sub

Die Namen der Tabellen die nicht berechnet werden sollen musst du natürlich anpassen.
Gruß
Nepumuk

Anzeige
AW: VBA: Tab.blätter während VBA-Prozess stilllegen?
23.08.2015 09:23:17
Joerschi
Vielen Dank Nepumuk,
Nur noch einmal zum Verständnis: Die Formeln der stillgelegten Blätter werden zwar nicht aktualisiert, aber die bisher berechneten Werte darin bleiben als Berechnungsgrundlage anderer Bezüge erhalten, richtig?
Viele Grüße
Joerschi

VBA: Tab.blätter während VBA-Prozess stilllegen?
23.08.2015 11:33:05
Nepumuk
Hallo,
ja richtig.
Gruß
Nepumuk

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige