Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1792to1796
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

Formelberechnung ausschaltem

Formelberechnung ausschaltem
23.11.2020 16:25:39
Jenny
Hallo,
ich benutze unten stehendes Makro, um die Dateinamen des Ordners aufzulisten.
Funktioniert soweit, allerdings in einer neuen Mappe geht es deutlich schneller als in der Mappe, in der ich die Daten brauche mit rund 32000 Formeln.
Da ich vermute, dass es da einen Zusammenhang gibt, wollte ich fragen, ob man das Makro nicht irgendwie so ändern kann, dass während des Ausführens keine Formeln berechnet werden.
Vielen Dank für eure Hilfe
Jenny

Sub DateienAuflisten()
Dim lngZeile As Long
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object
Set objFileSystem = CreateObject("scripting.FileSystemObject")
Set objVerzeichnis = objFileSystem.GetFolder("E:\Bilder")
Set objDateienliste = objVerzeichnis.Files
lngZeile = 1
For Each objDatei In objDateienliste
If Not objDatei Is Nothing Then
ActiveSheet.Cells(lngZeile, 1) = objDatei.Name
lngZeile = lngZeile + 1
End If
Next objDatei
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Formelberechnung ausschaltem
23.11.2020 16:40:15
Daniel
Hi
über Application.Calculation kannst du steueren, ob Formeln neu berechnet werden sollen oder nicht.
die IntelliSense zeigt dir die verschiedenen Möglichkeiten an.
Beachte, dass nach Makroende die zuletzt gesetzte Einstellung bestehen bleibt.
die andere Alternative ist, dass du die Dateien zuerst mal in einem Array sammelst, und dann das Array als ganzes in die Tabelle schreibst.
Das ist in der Regel schneller, als jeden Wert einzeln zu übertragen und man muss keine Einstellungen ändern:
Sub DateienAuflisten()
Dim lngZeile As Long
Dim objFileSystem As Object
Dim objVerzeichnis As Object
Dim objDateienliste As Object
Dim objDatei As Object
Dim arr
Set objFileSystem = CreateObject("scripting.FileSystemObject")
Set objVerzeichnis = objFileSystem.GetFolder("C:\Daten")
Set objDateienliste = objVerzeichnis.Files
lngZeile = 1
ReDim arr(1 To objDateienliste.Count, 1 To 1)
For Each objDatei In objDateienliste
If Not objDatei Is Nothing Then
arr(lngZeile, 1) = objDatei.Name
lngZeile = lngZeile + 1
End If
Next objDatei
Cells(1, 1).Resize(UBound(arr, 1), 1) = arr
End Sub

Gruß Daniel
Anzeige
AW: Formelberechnung ausschaltem
23.11.2020 18:23:48
Jenny
Hallo Daniel,
super danke. Läuft bedeutend schneller.
Was mir allerdings auffällt ich hatte das dim arr vergessen und es lief trotzdem.
Liebe Grüße
Jenny
AW: Formelberechnung ausschaltem
24.11.2020 11:49:05
Daniel
Hi
dann verwendest du kein Option Explicit
mit Option Explicit müssen alle verwendeten Variablen deklariert werden und das Verwenden einer nicht deklarierten Variable erzeugt einen Fehler.
Ohne Option Explicit werden Variablen vom System automatisch bei ihrer ersten Verwendung im Code deklariert (immer als Variant), so dass das Dim wegfallen kann.
Nachteil dabei ist, dass ohne Option Explicit Tippfehler bei Variablennamen ("objDateiliste" statt "objDateienliste") vom System nicht reklamiert werden und dann nicht immer ein Fehler entsteht, aber u.U. falsche Ergebnisse deren Ursache schwer zu finden ist.
wenn man immer mit Option Explicit arbeiten will, geht man die Extras - Optionen und setzt den Haken bei "Variablendeklaration erforderlich", bei allen danach neu erstellten Modulen ist dann automatisch das Option Explicit aktiv (zu sehen in der obersten Zeile des Moduls)
Gruß Daniel
Anzeige
AW: Formelberechnung ausschaltem
23.11.2020 16:42:51
Nepumuk
Hallo Jenny,
mit:
Application.Calculation = xlCalculationManual
aus und mit:
Application.Calculation = xlCalculationAutomatic
wieder einschalten.
Gruß
Nepumuk
AW: Formelberechnung ausschaltem
23.11.2020 18:27:19
Jenny
Hallo Nepumuk,
ich habe jetzt zum Testen nicht mein, sondern Daniels Makro genommen.
Aber funktioniert einwandfrei. Danke
Jenny

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige