2017-05-20 4 views
-2

Ich brauche Hilfe von Ihnen, gute Leute. Ich habe das Netz durchsucht und finde keine Lösung für mein Problem. VB ist nicht meine Stärke, aber aufgrund eines echten Rückwärtssystems, das ich benutzen muss, scheint VB die Lösung zu sein, meine Entwicklungszeit zu verkürzen. Ich habe einen Code gefunden, der funktioniert, aber ich muss weiter ausführen.Suchen/Ersetzen in einer bestimmten Excel-Tabelle mit VB

Ich brauche diesen Code nicht in jedem Blatt zu suchen und zu ersetzen, sondern nur ein bestimmtes Blatt. Sobald ich das richtig verstanden habe, werde ich es modifizieren, um mehr zu tun, viel mehr. :)

Also, wie ändere ich diesen Code, um das zu tun?

Sub Multi_FindReplace() 
'PURPOSE: Find & Replace a list of text/values throughout entire workbook from a table 
'SOURCE: www.TheSpreadsheetGuru.com/the-code-vault 

Dim sht As Worksheet 
Dim fndList As Integer 
Dim rplcList As Integer 
Dim tbl As ListObject 
Dim myArray As Variant 

'Create variable to point to your table 
    Set tbl = Worksheets("Table").ListObjects("Table1") 

'Create an Array out of the Table's Data 
    Set TempArray = tbl.DataBodyRange 
    myArray = Application.Transpose(TempArray) 

'Designate Columns for Find/Replace data 
    fndList = 1 
    rplcList = 2 

'Loop through each item in Array lists 
    For x = LBound(myArray, 1) To UBound(myArray, 2) 
    'Loop through each worksheet in ActiveWorkbook (skip sheet with table in it) 
     For Each sht In ActiveWorkbook.Worksheets 
     If sht.Name <> tbl.Parent.Name Then 

      sht.Cells.Replace What:=myArray(fndList, x), Replacement:=myArray(rplcList, x), _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 

     End If 
     Next sht 
    Next x 

End Sub 

Es ist ein bisschen mehr dieser Code am Ende tun wird, aber es würde den kompletten Umfang zu geben, ohne finanzielle Belohnung nicht fair. Nur diese Lösung wird ausreichen. :)

PS: Hoffe das Format funktioniert gut?

Antwort

0

diese eine ausprobieren:

Sub Multi_FindReplace() 
Dim sht As Worksheet 
Dim fndList As Integer 
Dim rplcList As Integer 
Dim tbl As ListObject 
Dim myArray As Variant 

Set tbl = Worksheets("Table").ListObjects("Table1") 
Set TempArray = tbl.DataBodyRange 
Set sht = 'the sheet you want to run through 
myArray = Application.Transpose(TempArray) 
fndList = 1 rplcList = 2 

For x = LBound(myArray, 1) To UBound(myArray, 2) 
     sht.Cells.Replace What:=myArray(fndList, x), Replacement:=myArray(rplcList, x), _ 
     LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
     SearchFormat:=False, ReplaceFormat:=False 
    End If 
Next x 
End Sub 
+0

Ihnen sehr UGP danken. Es funktionierte. –

+0

Ich habe eine andere Frage, wenn ich darf. Ich habe ein anderes Skript geschrieben (Wenn das der richtige Ausdruck ist?), Aber ich muss es jedes Mal 215 Mal mit verschiedenen Werten ausführen. In der Art der Codierung würde ich einen Funktionsblock (FB) verwenden. Was wäre der richtige Ausdruck dafür in VB? Ich lese die Funktionen in VB nach, aber das scheint das falsche "Werkzeug" zu sein. Subs und Loops scheinen dem zu entsprechen, was ich brauche. Bevor ich mich tangiere, bitte mich in die richtige Richtung lenken? –

+0

Sie würden eine Schleife verwenden und eine Funktion oder ein Sub aufrufen. Sie können Methodenparameter zum Starten/Verwenden geben, wenn Sie sie aufrufen, nur die Funktion kann einen Wert zurückgeben. Das ist wie der einzige Unterschied. – UGP