Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1076to1080
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
suchen und ersetzen
04.06.2009 14:35:31
Detlef
Hallo alle zusammen,
ich habe mehrere Arbeitsblätter in denen ich immer den Inhalt einer Spalte überprüfe. Dabei wird der jeweilige Inhalt der Zelle mit dem Inhalt eines KorrekturArbeitsblattes verglichen. Wird der Zellinhalt gefunden, wird er ersetzt.
Im Moment mache ich das mit folgendem tlw. aufgezeichneten Code. Das funktioniert auch. Nur habe ich den Eindruck, dass bei Abarbeitung der markierten Bereiche der Code immer langsamer läuft, Berechnung ist schon auf manuell gestellt. Hat jemand eine Idee wie man die Laufzeit optimieren könnte? Bin für jeden Hinweis dankbar.

Sub procStammnummernwechsel_2007()
On Error Resume Next
Dim STAMMNR_NEU As String
Dim STAMMNR_ALT As String
Sheets("Daten 2_Wechsler").Select
Range("rD2.Knoten").Select
STAMMNR_NEU = ActiveCell.Value 'einlesen neu Stammnummer'
STAMMNR_ALT = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value 'einlesen alte Stammnummer' _
Do While STAMMNR_NEU  ""
Sheets("Import 3_Jahr2007").Select
Range("rI3.StammNummernWechselStart").Select
'Nach unten markieren
If ActiveCell.Offset(1, 0).Value  "" Then
Range(Selection, Selection.End(xlDown)).Select
End If
For Each rngZelle In Selection
With Selection
.Replace What:=Val(STAMMNR_ALT), Replacement:=Val(STAMMNR_NEU), LookAt:=xlPart,  _
MatchCase:=True
End With
Next rngZelle
Sheets("Daten 2_Wechsler").Select
Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate
STAMMNR_NEU = ActiveCell.Value 'einlesen neu Stammnummer'
STAMMNR_ALT = Cells(ActiveCell.Row, ActiveCell.Column + 1).Value 'einlesen alte Stammnummer' _
Loop
End Sub


Gruß
Detlef

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Bei den ganzen Selects kein Wunder!
04.06.2009 15:26:11
Backowe
Hi Detlef,
lade doch einfach mal ein Beispiel hoch, ich schaue es mir heute Abend an.
Gruß Jürgen
AW: Bei den ganzen Selects kein Wunder!
04.06.2009 15:38:50
Rudi
Hallo,
diese Schleife ist der totale Blödsinn, da schon nach dem ersten Durchlauf erledigt:

For Each rngZelle In Selection
With Selection
.Replace What:=Val(STAMMNR_ALT), Replacement:=Val(STAMMNR_NEU), LookAt:=xlPart,  _
_
MatchCase:=True
End With
Next rngZelle


Lass For each ...Next weg.
Gruß
Rudi

AW: suchen und ersetzen
04.06.2009 15:34:14
Hans
Hallo Detlef,
Backowe hat recht, das Problem sind die Selects. Ohne Rumspringen sieht es so aus:

Sub ProcStammnummernwechsel_2007()
Dim wksA As Worksheet, wksB As Worksheet
Dim rngA As Range, rngB As Range, rngC As Range
Dim iRow As Integer
Dim STAMMNR_NEU As Long
Dim STAMMNR_ALT As Long
Set wksA = Worksheets("Daten 2_Wechsler")
Set wksB = Worksheets("Import 3_Jahr2007")
Set rngA = wksA.Range("rD2.Knoten")
Set rngB = wksB.Range("rI3.StammNummernWechselStart")
Set rngC = rngB
Do While rngA.Offset(iRow, 0)  ""
Set rngC = Union(rngC, rngB.Offset(iRow, 0))
iRow = iRow + 1
Loop
Do While Not IsEmpty(rngA)
STAMMNR_NEU = rngA.Value
STAMMNR_ALT = rngA.Offset(0, 1).Value
rngC.Replace _
What:=STAMMNR_ALT, _
Replacement:=STAMMNR_NEU, _
LookAt:=xlPart, MatchCase:=True
Set rngA = rngA.Offset(1, 0)
Loop
End Sub


gruss hans

Anzeige
AW: suchen und ersetzen
08.06.2009 16:01:21
Detlef
Hallo Hans,
super, vielen Dank. Das geht jetzt so schnell, dass ich erst dachte, da ist noch gar nichts passiert. Ich habe bei euch schon häufiger im Forum gelesen, dass man die Select's weglassen soll, nur habe ich das eigentlich nie richtig verstanden.
An deiner Antwort werde ich das mal zu verinnerlichen versuchen.
Viele Grüße
Detlef

323 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige