我使用此行的代碼:EXCEL VBA - 聲明範圍當片材名稱爲可變
ActiveWorkbook.Worksheets(sName).ListObjects(sName).Sort.SortFields.Add Key:=
Range ("sName.Name[[#All],[Keyword]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
現在,這條線是一個較長的功能的一部分的是應該做同樣的事情對於較寬牀單列表。因此,我需要改變的範圍內選擇:
Range ("sName.Name[[#All],[Keyword]]")
是基於一個變量,我無法找到如何做到這一點的解決方案。 **我嘗試了幾個選項,即興創作,沒有工作。
在此先感謝。
這是完整的代碼BTW:
Sub Filter()
'Application.ScreenUpdating = False
Call Filtering("US") 'To prepare Data for All Keywords
MsgBox "Updated"
'Application.ScreenUpdating = True
End Sub
Function Filtering(sName As String)
'
' Filtering Macro
'
'
Sheets(sName).Select
ActiveWorkbook.Worksheets(sName).ListObjects(sName).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(sName).ListObjects(sName).Sort.SortFields.Add Key:=
Range ("sName.Name[[#All],[Keyword]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(sName).ListObjects(sName).Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets(sName).ListObjects(sName).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(sName).ListObjects(sName).Sort.SortFields.Add Key:= _
Range("sName.Name[[#All],[Position]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal _
With ActiveWorkbook.Worksheets(sName).ListObjects(sName).Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.ListObjects(sName).Range.AutoFilter Field:=2, Criteria1:="<=20" _
, Operator:=xlAnd
End Function
問題是你正在設置你引用一個叫做_sName.Name [[#All],[Position]] _的**命名範圍**。你想要與表格分列什麼?你能否提供一張「美國」表格和數據的快照,並提供代碼試圖實現的描述。 –
將表格名稱添加到數組中並通過 – user1