Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Replacement-Zähler einbauen? Ersetzungen zählen!

Replacement-Zähler einbauen? Ersetzungen zählen!
15.02.2007 13:05:00
Daniel
Hallo liebe Excel-Experten,
Ich habe ein Macro geschrieben, welches Ersetzungen nach einer Liste vornimmt. D.H. in der einen Spalte steht, was ersetzt werden soll und in der anderen Spalte steht womit es ersetzt werden soll. Das Macro sucht nun nach allen möglichen Ersetzungspaaren und ersetzt, wenn eines zutrifft. Die Auswechslungen werden nicht in dem Workbook vorgenommen in dem das Macro steht, sondern in einem anderen Workbook, dessen Dateipfad im laufe des Macros eingelesen wird.
Wenn man die Excel-interne Funktion benutzt wird danach in einer Message Box angegeben wieviele Ersetzungen vorgenommen wurden.
Diese Funktion würde ich in meinem Macro auch gerne einbauen. Ich habe schon viele Versuche gemacht, aber bekomme es einfach nicht hin...
Ich hoffe Ihr könnt mir helfen, ich verzweifle schon.
Vielen Dank!!!
Euer Daniel
Hier mein Code:

Private Sub replace_Click()
'sucht in ausgewähler Datei jeweils die Einträge aus
'suchArray und ersetzt mit ersetzArray
Dim suchArray()
Dim ersetzArray()
Dim k, p As Long
Dim WS As Worksheet
arbeit.Visible = True 'arbeit ist ein bild
'suchArray füllen
For x = 2 To 9999
If IsEmpty("D" & x) Then
GoTo eArray
Else
ReDim Preserve suchArray(x - 1)
suchArray(x - 1) = Range("D" & x)
End If
Next x
'ersetzArray füllen
eArray:
For x = 2 To 9999
If IsEmpty("E" & x) Then
GoTo ersetzen
Else
ReDim Preserve ersetzArray(x - 1)
ersetzArray(x - 1) = Range("E" & x)
End If
Next x
'auf jedem sheet Änderungen vornehmen
ersetzen:
On Error GoTo ausgang
Workbooks.Open Filename:=fn 'fn ist eine globale Variable (wird
'an anderer Stelle mit Dateipfad des Workbooks gefüllt, auf dem
'Änderungen vorgenommen werden)
For Each WS In Worksheets
For k = LBound(suchArray) To UBound(suchArray)
Call WS.UsedRange.replace(suchArray(k), ersetzArray(k), xlWhole, , False)
Next k
Next
arbeit.Visible = False
ausgang:
If arbeit.Visible = True Then
meldung.Text = "ERROR - file not found"
End If
End Sub

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Replacement-Zähler einbauen? Ersetzungen zählen!
15.02.2007 13:46:56
Rudi
Hallo,
dann musst du die Werte einzeln ersetzen. Ungetestet:

Private Sub replace_Click()
'sucht in ausgewähler Datei jeweils die Einträge aus
'suchArray und ersetzt mit ersetzArray
Dim suchArray
Dim ersetzArray
Dim tmpArray
Dim iCounter As Long
Dim k As Long, i As Long, j As Long
Dim WS As Worksheet
Application.ScreenUpdating = False
arbeit.Visible = True 'arbeit ist ein bild
'suchArray füllen
suchArray = Range(Cells(2, 4), Cells(2, 4).End(xlDown))
'ersetzArray füllen
suchArray = Range(Cells(2, 5), Cells(2, 5).End(xlDown))
'auf jedem sheet Änderungen vornehmen
On Error GoTo ausgang
Workbooks.Open Filename:=fn 'fn ist eine globale Variable (wird
'an anderer Stelle mit Dateipfad des Workbooks gefüllt, auf dem
'Änderungen vorgenommen werden)
On Error GoTo 0
For Each WS In Worksheets
tmpArray = WS.UsedRange
For i = 1 To UBound(tmpArray, 1)
For j = 1 To UBound(tmpArray, 2)
For k = 1 To UBound(suchArray)
If tmpArray(i, j) = suchArray(k) Then
iCounter = iCounter + 1
tmpArray(i, j) = ersetzArray(k)
Exit For
End If
Next k
Next j
Next i
WS.UsedRange = tmpArray
Next WS
MsgBox iCounter & " Ersetzungen vorgenommen."
arbeit.Visible = False
Application.ScreenUpdating = True
Exit Sub
ausgang:
meldung.Text = "ERROR - file not found"
End Sub

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Replacement-Zähler einbauen? Ersetzungen zählen!
15.02.2007 14:06:42
Andi
Hi,
bin zwar nicht der Fragesteller, aber das interessiert mich jetz auch... ;-)
Die Replace-Methode bietet doch die Möglichkeit, mit dem Count-Parameter eine Obergrenze für die Anzahl der durchzuführenden Ersetzungen festzulegen. Folglich müssen die Ersetzungen ja intern mitgezählt werden. Ich hab jetz aber auch keine Möglichkeit gefunden, auf diesen Wert zuzugreifen. Weiß irgendeiner von den Cracks was darüber?
Schönen Gruß,
Andi
Anzeige
AW: Replacement-Zähler einbauen? Ersetzungen zählen!
15.02.2007 16:06:00
Daniel
Hallo,
erstmal vielen Dank für die schnelle Antwort! Leider bekomme ich bei diesem Code einen Runtime Error :(
Ich habe noch einige spezifische Zeilen zugefügt, sollte aber nicht das Problem sein, denn diese blenden nur Bilder ein/aus oder fügen text in eine Inputbox ein.
Der Runtime Error ist laut debugger in der Zeile "If tmpArray(i, j) = suchArray(k) Then".
Ich bin mit meinem VBA-Latein hier leider schon am Ende und weiß daher auch überhaupt nicht, woran das liegen kann. Es handelt sich um den Error '9' (Subscript out of range). Würde mich sehr freuen, wenn mir dabei noch jemand helfen könnte!
Euer Daniel
Hier mein aktueller Code:

Private Sub replace_Click()
'sucht in ausgewähler Datei jeweils die Einträge aus
'suchArray und ersetzt mit ersetzArray
Dim suchArray
Dim ersetzArray
Dim tmpArray
Dim iCounter As Long
Dim k As Long, i As Long, j As Long
Dim WS As Worksheet
Application.ScreenUpdating = False
schlecht.Visible = False
arbeit.Visible = True 'arbeit ist ein bild
erfolg.Visible = False
'suchArray füllen
suchArray = Range(Cells(2, 4), Cells(2, 4).End(xlDown))
'ersetzArray füllen
suchArray = Range(Cells(2, 5), Cells(2, 5).End(xlDown))
'auf jedem sheet die PIDs ändern
On Error GoTo ausgang
Workbooks.Open Filename:=fn 'fn ist eine globale Variable (wird
'an anderer Stelle mit Dateipfad des Workbooks gefüllt, auf dem
'Änderungen vorgenommen werden)
On Error GoTo 0
For Each WS In Worksheets
tmpArray = WS.UsedRange
For i = 1 To UBound(tmpArray, 1)
For j = 1 To UBound(tmpArray, 2)
For k = 1 To UBound(suchArray)
If tmpArray(i, j) = suchArray(k) Then
iCounter = iCounter + 1
tmpArray(i, j) = ersetzArray(k)
Exit For
End If
Next k
Next j
Next i
WS.UsedRange = tmpArray
Next WS
meldung.Text = "changes made"
schlecht.Visible = False
arbeit.Visible = False
erfolg.Visible = True
speichern.Enabled = True
MsgBox iCounter & " Ersetzungen vorgenommen."
Application.ScreenUpdating = True
Exit Sub
ausgang:
meldung.Text = "ERROR - file not found"
End Sub

Anzeige
AW: Replacement-Zähler einbauen? Ersetzungen zählen!
15.02.2007 16:10:09
Rudi
Hallo,
For Each WS In Worksheets
tmpArray = WS.UsedRange
For i = 1 To UBound(tmpArray, 1)
For j = 1 To UBound(tmpArray, 2)
For k = 1 To UBound(suchArray, 1)
If tmpArray(i, j) = suchArray(k, 1) Then
iCounter = iCounter + 1
tmpArray(i, j) = ersetzArray(k, 1)
Exit For
End If
Next k
Next j
Next i
WS.UsedRange = tmpArray
Next WS

Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe
Anzeige
AW: Replacement-Zähler einbauen? Ersetzungen zählen!
15.02.2007 16:52:27
Daniel
:(
Sorry, ich will echt nicht nerven und ich bin super dankbar für deine Hilfe...
Leider gibt es jetzt einen Runtime Error '13' (Type Mismatch) in der Zeile "If tmpArray(i, j) = suchArray(k, 1) Then"
Danke für deine weitere hilfe bei diesem Problem...
AW: Replacement-Zähler einbauen? Ersetzungen zäh
15.02.2007 19:27:45
Rudi
Hallo,
ohne Beispildaten kommen wir nicht weiter.
Gruß
Rudi
Eine Kuh mach muh, viele Kühe machen Mühe.
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