2016-01-21 26 views
3

我不得不更改電子表格上的格式,並且下面提到的範圍現在是表格。範圍已轉向表格,宏將不會運行

由於改變了這一點,我的宏報告「方法'排序'對象'範圍'失敗」。

由於代碼循環遍歷電子表格中的所有工作表(除外),因此我無法直接命名錶格,並且會添加新工作表,我不知道表名/編號。

如何選擇表(位置B72:L86)並按列I對其進行排序?

For Each wsSheet In ThisWorkbook.Worksheets 
    Select Case wsSheet.Name 
    Case "Affiliates", "New Report", "Pasted Report", "New Month Or Client", "Set Up Data" 
     'Do nothing. 

    Case Else 
     With wsSheet 
    .Range("B72:L86").Sort Key1:=.Range("I72"), Order1:=xlDescending 
     End With 
End Select 
+0

看來Range是一個表名。你可以嘗試使用Range.Range嗎? –

+0

是否每桌只有桌子? –

+0

是的只有一張表 –

回答

0

如果有每片只有一個表,你可以使用.ListObjects(*index*)屬性來參考一下吧。

Dim lo as ListObject 
With wsSheet 
    For Each lo in .ListObjects 
    lo.Sort.SortFields.Add Key:=Range(lo.Name & _ 
    "[[#All],[" & .Range("I72").value & "]]"), SortOn:=xlSortOnValues, Order:= xlDescending 
    With lo.Sort 
     .Header = xlYes 
     .MatchCase = False 
     .Orientation = xlTopToBottom 
     .SortMethod = xlPinYin 
     .Apply 
    End With 
    Next  
End With 
+1

有了這個我得到 - 「下標超出範圍」錯誤味精? –

+0

它不能在第一個索引位置。我修改了代碼以使其遍歷頁面上的所有列表對象(應該只有一個),因此您不會屈從於實際的索引編號。 – nwhaught

+0

修改後的代碼返回錯誤「Object Required」 - 任何想法? –