Anzeige
Archiv - Navigation
1268to1272
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

Code wird seeeehr langsam ausgeführt

Code wird seeeehr langsam ausgeführt
mtremer
Moin,
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

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Teste das mal,..
17.07.2012 12:36:20
Matze,Matthias
HalloMarco,
Private Sub CommandButton_Kundennummer_Click()
With Application
.ScreenUpdating = False
.EnableEvents = False
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, "  ", " ")
.ScreenUpdating = True
.EnableEvents = True
End with
End Sub
Gruß Matze
Das ist es!
17.07.2012 12:54:22
mtremer
Hi Matze,
das ging ja schnell. Und funktionieren tut es auch noch...
Ich bin begeistert, Danke!!
Viele Grüße
Marco
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige