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
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige