Microsoft Excel

Herbers Excel/VBA-Archiv

suchen und ersetzen mit Makro

Betrifft: suchen und ersetzen mit Makro von: Frank Tesch
Geschrieben am: 10.09.2014 18:02:09

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

  

Betrifft: AW: suchen und ersetzen mit Makro von: Crazy Tom
Geschrieben am: 10.09.2014 19:07:27

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


 

Beiträge aus den Excel-Beispielen zum Thema "suchen und ersetzen mit Makro"