Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
844to848
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
844to848
844to848
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

VBA und was zur Größe einer Datei.

VBA und was zur Größe einer Datei.
07.02.2007 09:41:13
H.
Hi,
also das wichtige und meiner Meinung nach recht schwierige zuerst:
Ich habe ein Formular erstellt, in dem der Anwander einige Kontrollkästchen aktivieren kann. Für jedes Kontrollkästchen müssen jetzt Daten in ein eigenes Datenblatt gelesen werden und das am Besten per Makro.
Deshalb habe ich ein eigenes Arbeitsblatt im Hintergrund, das erkennt, ob die Kontrollkästchen aktiviert sind oder nicht.
Wenn es aktiviert ist, so steht in Zeile 2 jeweils eine 1, sonst eine 0. In der ersten Zeile steht der Name, den das Tabellenblatt jeweils tragen soll.
Im ersten Schritt versuche ich eine Schleife in VBA zu kreieren, die erkennt, ob da nun eine 1 oder eine 0 steht und für den Fall der 1 ein Tabellenblatt einfügt, das den Namen mit dem Inhalt der Zelle oberhalb trägt...
Hoffentlich hab ich mich halbwegs deutlich ausgedrückt. Für Hilfe wäre ich dankbar.
Ach ja, und eine kleine Frage hab ich zusätzlich: Weiß jemand, ob es mehr Speicher raubt, wenn man eine ewig lange Formel in eine Zelle schreibt oder sie lieber in mehrere Zellen unterteilt. In meinem Fall hab ich ne schrecklich große Datei (über 400 MB) und der Rechner braucht für jeden Rechenschritt mittlerweile Ewigkeiten.
Nochmals Danke und Feedback kriegt man natürlich von mir.
Christoph

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
400 MB ????
07.02.2007 12:04:03
ransi
Hallo Christoph
Wenn deine Datei 400 MB hat und du das mit Formeln und Formatierungen geschafft hast ist es klar das Excel in die Knie geht.
Dann ist in der Datei irgendetwas grundsätzlich falsch.
Da musst du dringend abspecken.
Matrixformel bremsen die Performance ungemein.
Besonders wenn sie im Rudel auftreten.
Von daher ist es schlecht zu sagen was besser ist.
Meine Erfahrung sagt mir das es manchmal besser ist mit Hilfsspalten und einfachen Formeln zu arbeiten als mit Matrixformeln die auch noch grosse Bereiche abfragen.
ransi
AW: 400 MB ????
07.02.2007 13:10:02
H.
Hi,
also mein erstes Problem hab ich mittlerweile selber gelöst:

Sub Schaltfläche7_BeiKlick()
Dim Kuerzel As String
For i = 1 To 3
Sheets("Tabelle1").Activate
Kuerzel = Cells(1, i).Value
Cells(3, i).Select
If ActiveCell.Value = "1" Then Worksheets.Add.Name = Kuerzel
Next i
End Sub

und was die Größe meiner Datei angeht so danke ich für die Rückmeldung. Ich muss mir da noch Gedanken machen, ob ich vielleicht die eine oder andere Matrix-Formel ersetzen kann, aber letztlich würde dadurch viel Dynamik dem Tool verloren gehen.
Danke und Gruß,
Christoph
Anzeige
AW: 400 MB ????
07.02.2007 14:11:07
Klaus M.vdT.
Hallo Christoph,
Mit "kaum Excel/VBA Kentnissen" massiv Matrixformeln einsetzen halte ich ja für mutig ^^
Nichts für ungut.
Bei 400MB ist in deiner Datei irgend etwas massiv falsch gelaufen. Hast du viele Bilder ect eingefügt?
Trotzdem, als Ansatz:
Schalte die Automatische Berechnung aus (Extras - Optionen - Berechnen - Manuell) und lass die Kiste nur arbeiten, wenn du wirklich Aktualisierungen brauchst (mittels F9 Neuberechnung erzwingen). So behälst du die Dynamik und schonst den Blechknecht.
Wenn du VBA nutzt, schalte VOR jeder Operation die Automatische Berechnung und die Bildschirmaktualisierung ab, vergiss aber nicht sie wieder einzuschalten.
Und schließlich: Verzichte generell auf select und activate, das sind Performancebremsen.

Sub Schaltfläche7_BeiKlick()
Dim Kuerzel As String
With Application
.Calculation = xlManual
.ScreenUpdating = True
End With
For i = 1 To 3
With Sheets("Tabelle1")
Kuerzel = .Cells(1, i)
If .Cells(3, i).Value = "1" Then Worksheets.Add.Name = Kuerzel
End With
Next i
With Application
.Calculation = xlAutomatic
.ScreenUpdating = True
End With
End Sub

Gruß,
Klaus M.vdT.
Anzeige
AW: 400 MB ????
08.02.2007 09:03:25
H.
Hi,
naja, mit den Martix-Formel hab ich mich schon auseinandergesetzt. Ich hab mit meinen Kenntnissen nur mal etwas tiefer gestapelt, um zu vermeiden, dass jemand mich überschätzt. Lieber lese ich einen Text, der mir alles im Detail verrät als nichts zu verstehen.
In meiner Datei sind keine Bilder oder irgendwas, was sie künstlich aufblähen würde. Es handelt sich um eine große Zahl an Zeitreihen über mehrere Jahrzehnte (Tagesdaten). Diese müssen zweistufig ausgewertet werden. Diese Auswertung geschieht über (mind) zwei Krierien. Daher muss ich Matrix-Formeln verwenden. Zumindest wüßte ich bislang keine Alternative.
Und danke für die Tipps in VBA, habs noch nicht ausprobiert, werde das aber noch im Laufe der Woche versuchen. Feedback gibts bei mir immer.
Christoph
Anzeige
Danke für die Rückmeldung! m.w.T.
08.02.2007 10:37:13
Klaus M.vdT.
Hallo Christoph,
Danke für die Rückmeldung!
Im o.g. Code hat sich noch ein kleiner Fehler eingeschlichen, die Bildschirmaktualisierung schaltet man natürlich mit screeupdating = false aus!

With Application
.Calculation = xlManual
.ScreenUpdating = <b>False</b>
End With

Gruß,
Klaus
AW: Danke für die Rückmeldung! m.w.T.
09.02.2007 16:37:12
H.
So, keine Ahnung ob Du das noch ließt, aber ich hab ja versprochen, mich nochmal zu melden:
In Anbetracht des kommenden Wochenendes habe ich mir Deine Version mal angeschaut und natürlich funktioniert sie bestens. Vor allem fand ich aber interessant, wie Du meine Programmierung umgeschrieben und vereinfacht hast...
tja, ich habe noch viel Lern-Potenzial... Tausend Dank,
Christoph
Anzeige
AW: Danke für die Rückmeldung! m.w.T.
09.02.2007 17:22:50
Klaus M.vdT.
Hallo Christoph,
Lernpotenzial haben wir alle noch immer ^^
Für select-freies VBA führ dir mal diesen Code zu Gemüte:
http://www.online-excel.de/excel/singsel_vba.php?f=78
Gruß,
Klaus M.vdT.
AW: Access-löst_Dein_Problem ! ! !
08.02.2007 13:40:37
Gert Seler
Hallo Christoph,
für diese enormen Daten_Größen sollte eine "Datenbank-Programm"
verwendet werden.
mfg
Gert
AW: Access-löst_Dein_Problem ! ! !
09.02.2007 16:27:45
H.
Hallo,
das ist sicher ein guter Gedanke, aber auch wenn ich mich nicht wirklich in Access auskenne, so würde ich doch behaupten, dass die Berechnungen, die ich zwischendurch vornehmen muss, dort nicht erstellt werden können.
Dennoch ist es eine interessante Idee, denn man könnte ja zwischen beiden Programmen hin und her wechseln... Die Idee müsste man sich mal länger zu gemüte führen...
Danke,
Christoph
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige