Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: suchen und ersetzen mit Makro

suchen und ersetzen mit Makro
10.09.2014 18:02:09
Frank
Hallo,
das folgende Makro soll Daten aus einer Tabelle auslesen und in den anderen Blättern ersetzen.
Sub Ersetze()
Dim Werte As Variant, i As Long, Ws As Worksheet
Dim rngFund As Range, strErsterFund As String
'Suchen - Ersetzen - Daten auslesen
With Worksheets("Tausch")
Werte = .Range("A1").CurrentRegion.Value
End With
'Schleife über alle zu ersetzenden Begriffe
For i = 1 To UBound(Werte)
'Schleife über alle Tabellenblätter
For Each Ws In ActiveWorkbook.Worksheets
'Tabellenblatt "Tausch" ausschließen
If Ws.Name  "Tausch" Then
'Suche nach EAN
Set rngFund = Ws.Columns(1).Find(Werte(i, 1), LookIn:=xlValues, lookat:=xlWhole)
If Not rngFund Is Nothing Then
strErsterFund = rngFund.Address
'etwas gefunden => ersetzen
Do
'ersetzen
rngFund.Value = Werte(i, 2)
rngFund.Offset(0, 1).Value = Werte(i, 3)
'weiter suchen
Set rngFund = Ws.Columns(1).FindNext(rngFund)
Loop While (Not rngFund Is Nothing) And strErsterFund  rngFund.Address
End If
End If
Next Ws
Next i
End Sub
Aus der Tauschtabelle wird der erste Begriff geprüft und bei der ersten Fundstelle auch getauscht.
Dann hängt das Makro bei der Loop - Schleife und wird nicht mehr ausgeführt.
"Laufzeitfehler '91' - Objektvariable oder With-Blockvariable nicht festgelegt"
Alle Versuche, den Fehler zu beheben sind gescheitert.
Was mache ich falsch!?
MfG
Frank

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: suchen und ersetzen mit Makro
10.09.2014 19:07:27
Crazy
Hallo
so geht es in meinem Test
Sub Ersetze()
Dim Werte As Variant, i As Long, Ws As Worksheet
Dim rngFund As Range
'Suchen - Ersetzen - Daten auslesen
With Worksheets("Tausch")
Werte = .Range("A1").CurrentRegion.Value
End With
'Schleife über alle zu ersetzenden Begriffe
For i = 1 To UBound(Werte)
'Schleife über alle Tabellenblätter
For Each Ws In ActiveWorkbook.Worksheets
'Tabellenblatt "Tausch" ausschließen
If Ws.Name  "Tausch" Then
'Suche nach EAN
Set rngFund = Ws.Columns(1).Find(Werte(i, 1), LookIn:=xlValues, lookat:=xlWhole)
If Not rngFund Is Nothing Then
'etwas gefunden => ersetzen
Do
'ersetzen
rngFund.Value = Werte(i, 2)
rngFund.Offset(0, 1).Value = Werte(i, 3)
'weiter suchen
Set rngFund = Ws.Columns(1).FindNext(rngFund)
Loop While Not rngFund Is Nothing
End If
End If
Next Ws
Next i
End Sub

dabei braucht es keine erste Fundstelle
MfG Tom
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige