2015-08-21 197 views
0

我很難讓自動過濾使用VBA工作。我的代碼工作一次,然後我得到一個運行時錯誤代碼91.這是我的代碼。我知道這很簡單,但我錯過了什麼?提前致謝。Excel VBA自動過濾

Dim MyWorksheet As Worksheet 
Set MyWorksheet = Sheets("entity details - cost summary") 
Sheets("entity details - cost summary").Select 
Range("H6").Select 
MyWorksheet.AutoFilter.sort.SortFields.Clear 
MyWorksheet.AutoFilter.sort. _ 
    SortFields.Add Key:=Range("H6"), SortOn:=xlSortOnValues, Order:= _ 
    xlAscending, DataOption:=xlSortTextAsNumbers 
With MyWorksheet.AutoFilter. _ 
    sort 
    .Header = xlYes 
    .MatchCase = False 
    .Orientation = xlTopToBottom 
    .SortMethod = xlPinYin 
    .Apply 
End With 

更新: 上線上發生錯誤5

MyWorksheet.AutoFilter.sort.SortFields.Clear 

第5行是列標題,從塔B通過P.每一行表示不同的片製造設備,每一列代表一個不同的屬性或成本。 H列有可能的條目。所以我試圖使用自動過濾器來分組每個條目。

+0

哪一行會拋出錯誤? – RBarryYoung

+0

使用[AutoFilter方法](https://msdn.microsoft.com/en-us/library/office/aa221844%28v=office.11​​%29.aspx)的最簡單方法是通過定義範圍並工作在[With ... End With語句]中使用它(https://msdn.microsoft.com/en-us/library/wc500chb.aspx)。 [Range.CurrentRegion屬性](https://msdn.microsoft.com/en-us/library/office/ff196678.aspx)對此很有幫助。但是,由於您從第6行開始並且沒有提供指示圍繞H6的內容,因此很難在沒有看到您的數據看起來像什麼的情況下寫入該方法。 – Jeeped

回答

1

下面將在B列上的數據的範圍內工作:P開頭的標題行中的5行和B列

Sub equip_sort() 
    With Worksheets("entity details - cost summary") 
     With .Range(.Cells(5, 2), .Cells(Rows.Count, 2).End(xlUp)) 
      With .Resize(.Rows.Count, 15) 
       .Cells.Sort Key1:=.Columns(7), Order1:=xlAscending, _ 
          Orientation:=xlTopToBottom, Header:=xlYes 
       .Columns(7).AutoFilter field:=1 
      End With 
     End With 
    End With 
End Sub 

持續到最後值的數據被分類和一個過濾器列被選擇(列H)。由於該區域內沒有指定任何過濾器,因此未應用過濾器,也未提供任何樣品數據或預期結果。

+0

謝謝你Jeeped,奇妙地工作。我很欣賞這種方法,我將會學習和複製。沒有額外的過濾是必要的。道歉,我的更新有一個不幸的遺漏 - 列H有_ 3個可能的條目。所以一旦我把這三個數據整合起來,我就可以更輕鬆地處理數據。 – user3066783