Code wird seeeehr langsam ausgeführt
mtremer
ich habe mir einen Code gebastelt, der aus dem Zweischenspeicher Daten in eine Zelle einträgt und gleichzeitig bereinigt.
Folgendes wird gemacht:
- aus einem anderen Programm werden Daten kopiert. In diesem Fall eine Kundennummer. Diese ist durch das andere Programm mit Schreibschutz, bestimmter Farbe und Schrriftart belegt. Manchmal werden Freizeichen vor, zwischen und nach der Kundennummer mitkopiert. Manchmal gibt es in der Mitte auch ein nicht sichtbares Sonderzeichen
- Durch Buttonbestätigung wird die Kundennummer in die Zelle unformatiert eingefügt und danach bereinigt: Freizeichen vor, zwischen und nach der Kundennummer sowie das Sonderzeichen gelöscht.
Hier ist der Code dafür:
Private Sub CommandButton_Kundennummer_Click()
Dim t As Range
Set t = Range("B4")
t.Select
ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False
t = Trim(t.Value)
t = Replace(t, " ", " ")
t = Replace(t, " ", " ")
End Sub
Leider braucht Excel für die Ausführung eine gewisse Zeit. Bei Knopfdruck ist die Kundennummer also nicht sofort, sondern etwa 10 Sekunden später drin. Und leider ist das nicht der einzige Knopf, der das macht. Ich habe etwa 10 CommandButtons ähnlich programmiert.Am Ende, wenn alle Daten eingetragen sind, gibt es noch einen Knopf, der nochmal alle Zellen bereinigt. Das musste ich für den Fall einbauen, wenn der Nutzer die Daten mit strg+v einfügt und die Formatierung des anderen Programms überträgt. Das mache ich dann so (Auszug aus längerem Code, der noch einiges mehr macht):
Dim t As Range
For Each t In Selection
t = Trim(t.Value)
t = Replace(t, " ", " ")
t = Replace(t, " ", " ")
Next
Dieser Code brauch dann nochmal 30 Sekunden.
Und hier die alles entscheidene Frage: Was kann ich machen, damit der Code schneller ist. Und zwar so schnell, dass beim Klick auf den jeweiliegen Button die Daten sofort in der ensprechenden Zelle ist bzw. der Knopf am Ende alles überprüft hat.
Danke für Eure Hilfe.
Viele Grüße
Marco