Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
352to356
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
352to356
352to356
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

"Superharte Nuss" für Profis :)

"Superharte Nuss" für Profis :)
22.12.2003 11:58:14
LotharR
Hallo Gemeinde!

Dieser Post richtet sich an die Super-Profis dieses Forums:

Ich habe eine Monster-Datei (ca. 25 MB) mit ca 30 Sheets und vielen Indirekt-, Sverweis-, und sonstigen Quer-Berechnungen und Formeln. Darüberhinaus sind noch 3 externe Tabellen als Links eingebunden.

Die Tabelle wird monatlich mit "frischen SAP-Daten" versorgt. Hierbei erfolgt nach dem Import der diversen Grunddaten eine komplette Neuberechnung der Tabelle. (Defaultmäßig ist Berechnen auf manuell gesetzt, da durch die "indirekt"-Formeln beim Aufruf der Tabelle sonst allein schon 2 Minuten vergehen).

Das Ganze wird noch über eine Vielzahl von UFs gesteuert und ausgewertet.

Nun mein Problem.

Das aktualisieren der Tabelle dauert ewig. Es werden ca. 12 von den 30 Blättern berechnet, der Rest sind feste Basisdaten bzw. Hilfstabellen.
Jedes Blatt hat ca. 45 Spalten und 2000 Reihen.

Ich wollte den "Abarbeitungszustand" über eine Userform-Balkenanzeige darstellen. Wie das vom Grundsatz geht weiss ich sehr wohl, jedoch nur in Bezug darauf, wenn es in einer Schleife abgearbeitet wird, wobei hier der Schleifendurchlauf den Grafikfortschritt berechnet.

Wie aber geht das, wenn ich die Berechnung über "calculate" starte???

Derzeit setzte ich zuvor einen Timer und zeige nach der Berechnung das Ergebnis in einer MsgBox. Da aber die Dateien in unserem Netz liegen, ist die Berechnungsdauer sehr schwankend, je nach Netzauslastung.

Ideen sind sehr willkommen.

Liebe Grüsse
Lothar

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Superharte Nuss" für Profis :)
22.12.2003 12:10:32
soendi
hallo lothar!

eine idee wäre es, einfach alles wegzulassen, was system- und rechenleistung verschlingt. sprich: formatierungen, böswillger code und vor allem status-anzeigen, die doch auch nicht wirklich was bringen.
du sagst ja selber, dass es endlos lange dauert, bis alles berechnet ist. warum willst du es dann noch langsamer gestalten? (grundsatzfrage ist hier im text versteckt!!)

grüsse an lothar (der mit der knacknuss!)
soendi
Grundsatzfragen
22.12.2003 13:00:12
LotharR
Hallo Soendi (der mit der Grundsatzfrage) die ich nicht diskutieren möchte;)

das war echt ne Hilfe, danke!

Schöne Feiertage

Lothar
Anzeige
AW: "Superharte Nuss" für Profis :)
22.12.2003 12:17:58
Ulf
hast du gerade das Buch "Der kleine Hobbypsychologe" gelesen?
Stell dir Berechnung auf manuell, den Code für die Fortschrittsanzeige
in

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
und in ein Standardmodul
Option Explicit
Sub berechnen()
Dim s As Long, wsc As Long
wsc = Worksheets.Count
For s = 1 To wsc
Sheets(s).Calculate
Next
End Sub


Ulf
AW: "Superharte Nuss" für Profis :) @ Ulf
22.12.2003 13:34:20
LotharR
Danke Ulf!

Ich versteh es nicht ganz!

1. meine Berechnung steht auf manuell
2. ich machte ein Sheet.Calculate nach jedem Blatt (das geht noch jeweils recht fix)
3. ich mache anschliessend ein Workbook.Calculate um die Externen Links zu refreshen und zu berechnen
4. der Code für die Progressbar ist wie folgt aufgebaut (Beispiel aus anderem Workbook):

Auszüge:

A im Modul:
===========

In der(n) Schleife(n) im eigentlichen "lange dauerndem Macro":
ein "Call refreshPB"
nachdem zuvor die 100% Fortschritt anhand der Durchläufe (hier 372) bekannt sind:

B in UForm:
===========
Anm: in der UF liegen 2 Frames mit unterschiedlichen Farben (Weiss und Blau) übereinander
Der Blaue Frame wird Schrittweise vergrößert.

Option Explicit
Dim mfStep As Double


Sub HierGehtsLos()
'anstatt "Langes Makro" direkt aufzurufen, Umweg über Userform
frmPB.Show
DoEvents
End Sub

--------------------------------

Sub StartPB()
Call initPB(372) ' 372 sind die Gesamtschleifenschritte, also die 100%
Call "Langes Macro"
End Sub

---------------------------------

Sub initPB(lTotalSteps As Long)
With frmPB
.PBx.Width = 0 'zurücksetzen
mfStep = .PB100.Width / lTotalSteps 'Schrittbreite pro Aktualisierung
End With
End Sub

----------------------------------

Sub refreshPB()
frmPB.PBx.Width = frmPB.PBx.Width + mfStep
frmPB.Caption = "Bitte warten ... Berechnung zu " & Format(iCounter / 372, "0%") & " fertig"
DoEvents
End Sub

----------------------------------

5. immer noch das Problem: was sind die 100% Fortschritt beim Calculate ??
6. muss das "Private_Sub_Workbook_SheetCalculate(ByVal Sh As Object)" in jedes Blatt oder in ThisWorkbook ??

Gruss
Lothar
Anzeige
AW: "Superharte Nuss" für Profis :) @ Ulf
22.12.2003 17:12:10
Ulf
Nicht immer ist eine kontinuierlich Anzeige möglich. Außerdem steigt
durch eine solche Anzeige der overhead natürlich an, was deinen Code
zusätzlich verlangsamt.
Ich würde nur jeweils nach jedem SheetCalculate refreshen.

Ulf
AW: "Superharte Nuss" für Profis :)
22.12.2003 13:37:18
Bärnd
Hallo Lothar,

ich finde es immer wieder toll, wenn man nur mit Excel brachbare Ergebnisse aus SAP bekommt. Nunja.

Das SVERWEIS und INDIREKT etwas langsam sind hab ich auch schon mitbekommen. Aber vielleicht sollte man die Daten zum verknoten und querverweisen besser Access anvertrauen?

Ciao

der Bärnd
AW: "Superharte Nuss" für Profis :)
22.12.2003 13:49:09
LotharR
Hallo Bärnd (mit Ä wie Ätsch?? ) LOL

ja, das mit SAP ist schon ein Kreuz, aber da es teilweise um Plandaten geht, drück ich mal in Richtung SAP ein Auge zu;).

Und mit Access ist das so eine Sache ... ich kann es nicht (richtig)! Ich arbeite jetzt seit 4 Jahren intensiver mit Excel (also nicht nur A1 + A2 ..) und seit ca. 1 Jahr mit VBA.
Und es ist sehr viel einfacher mit der Darstellung als Access (so ich finde). Ich will mich auf meine "alten Tage" nicht auch noch mit Access rumquälen. Ich weiss, dass mein "vergewohltätigtes" Workbook sehr "datenbankverdächtig" ist und wohl besser unter Access laufen sollte, aber ich kann mich nicht zu Access durchringen.

Trotzdem danke.

Lothar
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige