Discussion:
Excel per VBA mitteilen wann es bestimmte Zellen berechnen soll
(zu alt für eine Antwort)
Bobby
2006-06-27 07:56:01 UTC
Permalink
Hallo,

nachdem mein Tool soweit steht, hab ich ein Geschwindigkeitsproblem, welches
eindeutig darauf zurückzuführen ist, daß die Zellen aus dem Tabellenblatt
"Berechnung" immer sofort aktualisiert werden.

Läßt sich Excel irgendwie mitteilen, daß es die Berechnung für ein
bestimmtes Tabellenblatt unterlässt und sich erst ganz zum Schluß an das
Berechnen ranmacht?

Danke schonmal!
Gruß
Bobby
Melanie Breden
2006-06-27 08:21:35 UTC
Permalink
Hallo Bobby,
Post by Bobby
Läßt sich Excel irgendwie mitteilen, daß es die Berechnung für ein
bestimmtes Tabellenblatt unterlässt und sich erst ganz zum Schluß an das
Berechnen ranmacht?
dazu kannst du die Calculation-Eigenschaft auf manuell setzen.

Meistens ist es sinnvoll, neben der Berechnung weitere Eigenschaften
für die Dauer von VBA Aktionen zu deaktivieren.

Bei der Deaktivierung von Ereignissen muss man allerdings
sicherstellen,
dass diese Eigenschaft nach Beendigung der Prozedur wieder aktiviert
wird,
da sonst keinerlei Ereignisse überwacht werden, bis EnableEvents
wieder
auf True gesetzt wurde.

Insgesamt könnte die De- und Aktivierung so aussehen:

Public Sub SchnellesMakro()
With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With

' Dein Code

With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Mit freundlichen Grüssen
Melanie Breden


--
- Microsoft MVP für Excel -
Microsoft Excel - Die ExpertenTipps http://tinyurl.com/cmned
Das Excel-VBA Codebook http://excel.codebooks.de
Excel-Auftragsprogrammierung
Bobby
2006-06-27 08:45:01 UTC
Permalink
Hey Melanie,
Post by Melanie Breden
Public Sub SchnellesMakro()
With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
' Dein Code
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Geil! Schneller als die Polizei erlaubt ;)

Vielen Dank nochmal!
LG
Bobby
b***@gmail.com
2006-06-27 09:06:15 UTC
Permalink
Hallo,

zusaetzlich kannst Du erwaegen, direkt aus VBA nur Teile Deiner Datei
berechnen zu lassen:

Sheets("Tabellenblatt1").Calculate

oder sogar

Range("A1:A5").Calculate

HTH,
Bernd
Post by Bobby
Hey Melanie,
Post by Melanie Breden
Public Sub SchnellesMakro()
With Application
.EnableEvents = False
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With
' Dein Code
With Application
.EnableEvents = True
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Geil! Schneller als die Polizei erlaubt ;)
Vielen Dank nochmal!
LG
Bobby
Loading...