2017-01-25 4 views
0

Ich schreibe einen VBA-Code, der eine bestimmte Spalte auf dem Blatt finden und auf bestimmten Citeria sortieren muss. Dies ist mein CodeVBA-Code, um eine Spalte zu suchen und zu sortieren

Sub SortExchangesEurope() 

    Dim intCounter As Integer 
    Dim rngExchange As Range 
    intCounter = 1 

    Do While Worksheets("Sheet1").Cells(2, intCounter) <> "" 
     If Worksheets("Sheet1").Cells(2, intCounter).Value = "Exchange" Then 
      With Worksheets("Sheet1") 
       Set rngExchange = .Range(.Cells(2, intCounter), .Cells(2, intCounter)) 
       MsgBox intCounter 
      End With 
     End If 

     intCounter = intCounter + 1 
    Loop 

    Worksheets("Sheet1").Range("$A$2:$AP$778").AutoFilter Field:=intCounter, Criteria1:=Array(_ 
     "XBEL", "XBUD", "XBSE", "XQMH", "XWAR", _ 
     "BMEX", "XLIS", "XLIT", "XBUL", "ASEX", _ 
     "XDUB", "XBRU", "XLUX", "XSTO", "XSWX", _ 
     "XHEL", "XMOS", "MISX", "XCSE", "XVTX", _ 
     "IEPA", "XMIL", "XLIS", "BMEX", _ 
     "XLJU", "ASEX", "XRIS", "XBRA", "xlOn", _ 
     "XOSL", "XPAR", "XPRA", "XICE", "XIST", _ 
     "XTAL", "XMIL", "XTRN", "XBRU", "XLDN", _ 
     "XAMS", "XZAG", "XSWX", "XATH", "XMAD", "XOME", _ 
     "XMRV", "XADE", "XVTX", "XTAH", "RTSX", "XLTO", _ 
     "XDMI", "MFOX", "XMAD", "XMAT", "XTLX", "ICEU", _ 
     "XMON", "XTUR", "XBRD", "XEDX", "XOME", "XLIF"), Operator:=xlFilterValues 

End Sub 

Der erste Teil für die Spalte sieht, dass der Name in ist und der zweite Teil muss Art nur das Feld mit den angegebenen Codes in ihnen. Beide Teile funktionieren getrennt, aber sie arbeiten nicht zusammen.

Autofilter Bereichsklasse, fehlgeschlagen - erhalte ich diesen Fehler

+1

Welche Fehler mit bekommen Sie? – Vinnie

+0

Ich aktualisierte meine Frage – tombata

+0

So identifizieren Sie die Spalte mit "Exchange" und dann Schritt Sie die Variable IntCounter um 1 vor dem Verlassen der Schleife und zum Autofilter fortfahren. Sind Sie sicher, dass Sie die richtige Spalte filtern? –

Antwort

1

Sie haben zu prüfen und den AutoFilterMode einstellen, bevor AutoFilter

Sub SortExchangesEurope() 
    Dim wS As Worksheet 
    Dim intCounter As Integer 
    Dim rngExchange As Range 

    Set wS = Sheets("Sheet1") 
    intCounter = 1 

    With wS 
     Do While .Cells(2, intCounter).Value <> "Exchange" Then 
      intCounter = intCounter + 1 
     Loop 
     Set rngExchange = .Range(.Cells(2, intCounter), .Cells(2, intCounter)) 

     '.Activate 
     '.Range("B2").Activate 
     If Not .AutoFilterMode Then .AutoFilterMode = True 

     .Range("$A$2:$AP$778").AutoFilter Field:=intCounter, Criteria1:=Array(_ 
      "XBEL", "XBUD", "XBSE", "XQMH", "XWAR", _ 
      "BMEX", "XLIS", "XLIT", "XBUL", "ASEX", _ 
      "XDUB", "XBRU", "XLUX", "XSTO", "XSWX", _ 
      "XHEL", "XMOS", "MISX", "XCSE", "XVTX", _ 
      "IEPA", "XMIL", "XLIS", "BMEX", _ 
      "XLJU", "ASEX", "XRIS", "XBRA", "xlOn", _ 
      "XOSL", "XPAR", "XPRA", "XICE", "XIST", _ 
      "XTAL", "XMIL", "XTRN", "XBRU", "XLDN", _ 
      "XAMS", "XZAG", "XSWX", "XATH", "XMAD", "XOME", _ 
      "XMRV", "XADE", "XVTX", "XTAH", "RTSX", "XLTO", _ 
      "XDMI", "MFOX", "XMAD", "XMAT", "XTLX", "ICEU", _ 
      "XMON", "XTUR", "XBRD", "XEDX", "XOME", "XLIF"), Operator:=xlFilterValues 

    End With 'wS 

End Sub 
+0

Wenn der Code das if, hat intCounter einen Wert von 43 und das scheint das Problem zu sein, aber ich kann es nicht beheben – tombata

+0

@AntonPetrov: Siehe die Bearbeitung! ;) – R3uK

Verwandte Themen