Excel 2003: wie kann man Funktionsaufrufe kontrollieren

19/02/2008 - 10:07 von JoJo | Report spam
Hallo allerseits,
ich habe die Funktion DIN_KW() erstellt und diese in ein Modul meiner
Arbeitsmappe kopiert.
Bei der Auswertung von Daten wird diese Funktion über eine VBA Routine
zeilenweise in ein Tabellenblatt kopiert. Jetzt habe ich den Eindruck, das
nach jedem einzelnem Kopiervorgang diese Funktion aufgerufen wird, wodurch
sich die Ausführung der VBA Routine sehr verzögert. (Möglicherweise nach
jeder Änderung in diesem Tabellenblatt)
Bei 40 kopierten Zeilen wird die Funktion ca. 120 x (schwankt) aufgerufen.

Meine Frage:
Kann ich eine solche Funktion gezielt starten und ausführen lassen, z.B.
nach dem Ende des kompletten Kopiervorganges.
 

Lesen sie die antworten

#1 Peter Schleif
19/02/2008 - 10:30 | Warnen spam
JoJo schrieb:

Kann ich eine solche Funktion gezielt starten und ausführen lassen, z.B.
nach dem Ende des kompletten Kopiervorganges.



Ich hab es in einem àhnlichen Thread in dieser Gruppe mal so gelöst:

- Format der Zelle vorrübergehend auf Text stellen (VBA: "@")
- Funktion reinkopieren
- Original-Format wiedeherstellen
- Den ganzen Bereich neu berechnen

Laut Aussage des damaligen Fragenden hat das den Vorgang stark
beschleunigt. Angenommen deine Funktion soll in B1:B40 und bezieht
sich auf A1:A40.

Peter


Sub funktion_kopieren()

Dim zeile As Integer
Dim number_format As String

For zeile = 1 To 40
number_format = Cells(zeile, "B").NumberFormat
Cells(zeile, "B") = "=DIN_KW(" _
& Cells(zeile, "A").Address(False, False) _
& ")"
Cells(zeile, "B").NumberFormat = number_format
Next

Range("B1:B40") = Range("B1:B40").Formula

End Sub

Ähnliche fragen