Betrifft: VBA Kalkulation unterdrücken bei Query.Refresh
von: Boris
Geschrieben am: 04.02.2010 14:47:48
Hallo,
obwohl ich gemäß folgendem Skript die Kalkulationseinstellung auf manuell setze, wird (anscheinend durch das qt.refresh) nach jedem Schleifendurchlauf neu kalkuliert. Setze ich die Kalkulation dagegen per Hand vor dem Ausführen des Makros auf manuell, wird nicht kalkuliert. Woran liegt das? In anderen Makros funktioniert untenstehende Kalkulationsabfrage...
Sub Query_Update() Dim oldDir As String Dim newDir As String Dim ws As Worksheet Dim qt As QueryTable Dim lngCalcStatus As Long lngCalcStatus = Application.Calculation If lngCalcStatus <> -4135 Then Application.Calculation = xlCalculationManual newDir = ThisWorkbook.Path For Each ws In Worksheets For Each qt In ws.QueryTables If qt.QueryType = xlODBCQuery Then oldDir = ExtractDir(qt.Connection) If oldDir <> "" Then qt.Connection = Replace(qt.Connection, oldDir, newDir, compare:= _ vbTextCompare) qt.CommandText = Replace(qt.CommandText, oldDir, newDir, compare:= _ vbTextCompare) End If End If qt.Refresh Next Next Application.Calculation = lngCalcStatus End Sub
Betrifft: AW: VBA Kalkulation unterdrücken bei Query.Refresh
von: Ramses
Geschrieben am: 04.02.2010 15:24:46
Hallo
dann machs doch einfach mal direkt unter Umgehung der Abfrage
Anstelle von
lngCalcStatus = Application.Calculation
If lngCalcStatus <> -4135 Then Application.Calculation = xlCalculationManual
verwendest du einfach
Application.Calculation = xlCalculationManual
und am Ende
Application.Calculation = xlCalculationAutomatic
und nochmals probieren
Gruss Rainer
Betrifft: AW: VBA Kalkulation unterdrücken bei Query.Refresh
von: Boris
Geschrieben am: 04.02.2010 18:34:32
Hallo,
das ist doch aber letztendlich das gleiche und führt genau wie vorher dazu, dass nach jedem Schleifendurchlauf kalkuliert wird.
Finde dies sehr merkwürdig. Welchen Unterschied macht es, ob ich die Einstellung manuell oder per Application.Calculation = xlCalculationManual auf manuell setze? Das müsste doch genau das gleiche bewirken?
Viele Grüße...
Betrifft: AW: VBA Kalkulation unterdrücken bei Query.Refresh
von: Ramses
Geschrieben am: 04.02.2010 19:32:39
Hallo
"...das ist doch aber letztendlich das gleiche..."
Mag so aussehen.,... aber vielleicht ist das Ergebnis der Prüfung nicht das was du, oder EXCEL, erwartet.
Gruss Rainer
Betrifft: AW: VBA Kalkulation unterdrücken bei Query.Refresh
von: Boris
Geschrieben am: 05.02.2010 09:43:31
Hallo
Ok, aber dennoch führt Dein Vorschlag zum gleichen Ergebnis...
Wenn ich dagegen die beiden Anweisungen Application.Calculation = xlCalculationManual und Application.Calculation = xlCalculationAutomatic je in getrennte Subs packe und dann diese Subs manuell hintereinander aufrufe, funktioniert es:
1 Sub Calc_Manuell () = Application.Calculation = xlCalculationManual
2 Sub Query_Update () = Update der Queries
3 Sub Calc_Automatic () = Application.Calculation = xlCalculationAutomatic
Allerdings löst das jetzt nicht unbedingt mein Problem, da ich ja nicht 3 Subs ausführen will...
Kennt jemand eine Lösung?
Viele Grüße