2017-09-19 2 views
0

Der folgende Code ist dazu gedacht, Textzeichenfolgen in ein übersichtliches Array in einem Blatt umzuwandeln, aber er ändert den Text in anderen Blättern innerhalb der Arbeitsmappe.Excel VBA: Skript auf ein Blatt isolieren

Ich habe den Block markiert, wo ich denke, dass das Problem entsteht, indem Sie es mit den Kommentaren #below und umgeben.

Wie kann ich dies nur auf einem bestimmten Blatt ausführen lassen?

Sub Convert() 

    Rows(2).EntireRow.Hidden = True 
    Rows(3).EntireRow.Hidden = True 
    Rows(4).EntireRow.Hidden = True 
    Rows(5).EntireRow.Hidden = True 

    '##Below 

    Dim sht As Worksheet 
    Dim fndList As Variant 
    Dim rplcList As Variant 
    Dim x As Long 

    fndList = Array(" CR 0.00 0.00 ", " DR 0.00 0.00 ", " 0.00 ", " Cr", " Dr", "0.00", "0.00 ") 
    rplcList = Array(";-", ";", ";", "", "", "", "") 
    For x = LBound(fndList) To UBound(fndList) 
     For Each sht In ActiveWorkbook.Worksheets 
      sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _ 
       LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
       SearchFormat:=False, ReplaceFormat:=False 
     Next sht 

     '##Above  
    Next x 

    Range("A1") = "Account" 
    Range("C1") = "Balance" 
    Range("D1") = "KP" 
    Range("A2", Range("A2").End(xlDown)).TextToColumns _ 
    Destination:=Range("A2"), DataType:=xlDelimited, Semicolon:=True 
    Columns("B:C").AutoFit 
    Range("A1", Range("A1").End(xlDown)).Copy 
    Range("C1", Range("C1").End(xlToRight).End(xlDown)).PasteSpecial _ 
    Paste:=xlPasteFormats 
    Application.CutCopyMode = False 

    Columns(2).EntireColumn.Hidden = True 

    Range("C:C").AutoFilter 1, "<>", , , False 

End Sub 

Antwort

1

Im Unten Abschnitt haben Sie diese Schleife:

For Each sht In ActiveWorkbook.Worksheets 
    sht.Cells.Replace What:=fndList(x), Replacement:=rplcList(x), _ 
      LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _ 
      SearchFormat:=False, ReplaceFormat:=False 
Next sht 

Was bedeutet, dass Sie die Replace für alle Blätter tun.

ändern Sie es an:

Set sht = ThisWorkbook.Sheets("YourSheetName") '<-- modify to your sheet's name 

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

, auch auf der sicheren Seite zu sein, für den Above Abschnitt vollständig Ihre Range Objekte mit den sht qualifizieren. siehe Beispiel unten:

With sht 
    .Range("A1") = "Account" 
    .Range("C1") = "Balance" 
    .Range("D1") = "KP" 

    ' rest of your code 

End With 
+0

@ YowE3K es ist fast 08.00 Uhr –

+0

@ YowE3K Ich habe kleine Kinder, und ich laufe in dem Morgen wache ich jeden Tag um 04:30 Uhr bis :( –

+0

Vielen Dank Shai! Ich kann es kaum erwarten, dies auszuprobieren - ich werde dich wissen lassen, wie es morgen geht! –

Verwandte Themen