2017-01-25 72 views
0

我正在編寫一個VBA代碼,它必須在工作表上找到特定的列並在特定的citeria上對其進行排序。這是我的代碼VBA代碼來搜索一個列並對其進行排序

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 

第一部分查找這個名字在列和第二部分必須排序僅領域與他們指定的代碼。兩部分都單獨工作,但不能一起工作。

自動篩選範圍類的失敗 - 我收到此錯誤

+1

你什麼錯誤之前檢查並設定AutoFilterMode? – Vinnie

+0

我更新了我的問題 – tombata

+0

因此,您使用「Exchange」標識列,然後在退出循環並繼續到自動過濾器之前將變量IntCounter加1。你確定你正在過濾右欄嗎? –

回答

1

你必須使用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

當代碼退出if時,intCounter的值爲43,這似乎是問題,但我不能修復它 – tombata

+0

@AntonPetrov:請參閱編輯! ;) – R3uK

相關問題