Geschwindigkeitsoptimierung
Michael
Meine Frage dreht sich um die Optimierung eines VBA Ablaufes, der momentan einige Sekunden benötigt.
Meine Vorlage nutzt unter anderem ein Worksheet als A4 Textblatt. Dabei sind alle Zellen auf A4 Größe verbunden zu einer einzigen .Range("L13"). Mit einer Routine werden vorgefertigte Textblöcke zu einem neuen Text kombiniert. Überschriften werden dabei Fett eingesetzt. Beim Hinzufügen von Text verliert die Zelle die individuelle Formatierung der einzelnen Buchstaben.
Um das zu umgehen, habe ich eine Routine geschrieben, welche alle Buchstaben (bis zu 3000) nach fetter Formatierung abfragt und als Variablen (bBold) speichert. Nach dem Zusammenlesen wird die Formatierung wieder von den Variablen auf die Buchstaben übertragen. Dieser Teil geht recht schnell, da ich größere Pakete auf einmal formatieren kann.
Wo ich nicht weiter komme, ist beim Einlesen in den Variablenspeicher. Das dauert bei einer voller A4 Seite mit ca.2000 Buchstaben mehrere Sekunden. Folgende Routine benutze ich, um die Schnelligkeit zu prüfen:
Option Explicit
Private Declare Function GetTickCount Lib "kernel32" () As Long
Sub RecordFormat()
Dim bBold(3000) As Byte
Dim rText As Range
Dim iCount As Integer
Dim iZeit As Long
Dim iCellLength As Integer
iCount = 1
Set rText = ActiveSheet.Range("L13") 'Verbunden A4 große Zelle
iCellLength = Len(rText.FormulaR1C1) 'Bereits geschriebener Text
iZeit = GetTickCount
'Fette Buchstaben werden gemerkt
Do
If rText.Characters(iCount, 1).Font.Bold Then bBold(iCount) = 1
iCount = iCount + 1
Loop Until iCount = iCellLength
MsgBox "Millisekunden: " & GetTickCount - iZeit
End Sub
Gibt es eine schnellere Möglichkeit die Formatierung zu erfassen?
Danke
Michael