2016-05-02 2 views
1

Bitte schauen Sie, wie es mit% funktioniert, @ Zeichen, aber nicht mit ~ oder! muss mehr Sonderzeichen enthalten.Ich versuche, den angegebenen vb-Code auszuführen, aber es funktioniert nicht für einige Zeichen wie "!", "~"

Der gesamte Code läuft gut, aber nicht entfernen Sie bitte Hilfe und danke für Ihre Hilfe im Voraus.

Private Sub NewOrdersData() 

Dim fndList As Variant 
Dim x As Long 

i = 0 
n = 2 

fndList = Array("!", "@", "#", "$", "%", "~") 

Worksheets("UploadData").Cells.ClearContents 
Sheets("ProcessedData").Activate 'data to be entered 
u = WorksheetFunction.CountIf(Columns(1), ">0") 

    For i = 2 To u ' Till End of Record Count 

    If Cells(i, 16) = "Upload" Then 
    Sheets("UploadData").Cells(1, 1) = Cells(1, 2) 
    Sheets("UploadData").Cells(1, 2) = Cells(1, 3) 
    Sheets("UploadData").Cells(1, 3) = Cells(1, 4) 
    Sheets("UploadData").Cells(1, 4) = Cells(1, 5) 
    Sheets("UploadData").Cells(1, 5) = Cells(1, 6) 
    Sheets("UploadData").Cells(1, 6) = Cells(1, 7) 
    Sheets("UploadData").Cells(1, 7) = Cells(1, 8) 
    Sheets("UploadData").Cells(1, 8) = Cells(1, 9) 
    Sheets("UploadData").Cells(1, 9) = Cells(1, 10) 
    Sheets("UploadData").Cells(1, 10) = Cells(1, 11) 
    Sheets("UploadData").Cells(1, 11) = Cells(1, 12) 
    Sheets("UploadData").Cells(1, 12) = Cells(1, 13) 
    Sheets("UploadData").Cells(1, 13) = Cells(1, 14) 
    Sheets("UploadData").Cells(n, 1) = Cells(i, 2) 
    Sheets("UploadData").Cells(n, 2) = Cells(i, 3) 
    Sheets("UploadData").Cells(n, 3) = Cells(i, 4) 
    Sheets("UploadData").Cells(n, 4) = Cells(i, 5) 
    Sheets("UploadData").Cells(n, 5) = Cells(i, 6) 
    Sheets("UploadData").Cells(n, 6) = Cells(i, 7) 
    Sheets("UploadData").Cells(n, 7) = Cells(i, 8) 
    Sheets("UploadData").Cells(n, 8) = Cells(i, 9) 
    Sheets("UploadData").Cells(n, 9) = Cells(i, 10) 
    Sheets("UploadData").Cells(n, 10) = Cells(i, 11) 
    Sheets("UploadData").Cells(n, 11) = Cells(i, 12) 
    Sheets("UploadData").Cells(n, 12) = Cells(i, 13) 
    Sheets("UploadData").Cells(n, 13) = Cells(i, 14) 

    n = n + 1 
    End If 

    Next 
For x = LBound(fndList) To UBound(fndList) 
    Worksheets("UploadData").Cells.Replace _ 
What:=fndList(x), Replacement:="" ', _ 
    Next x 

    Sheets("UploadData").Activate 
      MsgBox "Complete" 
End Sub 
+0

Versuchen Hinzufügen 'Sheets ("ProcessedData")' Infront alle 'Cells'.. Oder benutze 'mit'. – findwindow

+0

Problem ist nicht in Sheets ("ProcessedData"), aber in UploadData scheint es, dass das Problem in Zeichen –

Antwort

2

Wechsel:

What:=fndList(x) 

An:

What:="~" & fndList(x) 

Die ~ sagt für den spezifischen Charakter suchen treffen und nicht seine Wildcard-Attribut verwenden.

Also ja die letzte Zeichenfolge wäre "~~". Aber das wird dann nach dem ~ suchen und es ersetzen.

Es funktioniert auch mit regulären Zeichen, so dass Sie es nicht für diejenigen ändern müssen, die bereits funktionieren. Stell es einfach vor alles.

reinigte ich Ihren Code ein wenig auch auf:

Private Sub NewOrdersData() 

Dim fndList() As Variant 
Dim x As Long 
Dim ws As Worksheet 
Dim u As Long, i As Long 
n = 2 

fndList = Array("!", "@", "#", "$", "%", "~") 
With Worksheets("UploadData") 
    .Cells.ClearContents 
    Set ws = Sheets("ProcessedData") 'data to be entered 
    u = .Range("A" & .Rows.Count).End(xlUp).Row 

    For i = 2 To u ' Till End of Record Count 

     If ws.Cells(i, 16) = "Upload" Then 
      .Range(.Cells(1, 1), .Cells(1, 13)).Value = ws.Range(ws.Cells(1, 2), ws.Cells(1, 14)).Value 
      .Range(.Cells(n, 1), .Cells(n, 13)).Value = ws.Range(ws.Cells(i, 2), ws.Cells(i, 14)).Value 
      n = n + 1 
     End If 

    Next i 
    For x = LBound(fndList) To UBound(fndList) 
     .Cells.Replace "~" & fndList(x), "" 
    Next x 
    .Activate 
End With 

MsgBox "Complete" 

End Sub 

EDIT:

Um zu zeigen, dass die Schleife arbeitet ich diesen Teil des Codes verwenden:

Sub frii() 
fndList = Array("!", "@", "#", "$", "%", "~") 

    For x = LBound(fndList) To UBound(fndList) 
     Selection.Replace What:="~" & fndList(x), Replacement:="" 
    Next x 

End Sub 

Vorher:

enter image description here

Nach:

enter image description here

+0

Ich habe versucht, unten, aber es für andere Arbeiten wie% gestoppt, bitte vorschlagen. Für x = LBound (fndList) Zu UBound (fndList) Arbeitsblätter ("UploadData"). Cells.Replace _ Was: = "!" & fndList (x), Ersetzung: = "" ', _ ' SearchOrder: = xlByColumns, MatchCase: = True Nächste x –

+0

Nur um zu erwähnen, dass diese Zeichen nicht in der gleichen Zelle sind –

+0

Siehe Bearbeiten der Schleife, die das Ersetzen funktioniert für mir kein Problem. @SK Siehe Bearbeiten. Ich habe Ihren Code ein wenig überarbeitet. –

Verwandte Themen