あるとき、私はこのコード行を使用する範囲を宣言する: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]]")
変数に基づいて、私はちょうどそれを行う方法について正しい解決策を見つけることができません。 **私はいくつかのオプションを試してみましたが、即興で動作しませんでした。
ありがとうございます。ところで、完全なコードです
:
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 [[#すべて]、[位置]] _と呼ばれる**名前付き範囲**を参照しているという設定です。あなたはそのシートで何をソートしようとしていますか?シート「US」のスナップショットとデータを提供し、コードが達成しようとしていることの説明を提供できますか? –
シート名を配列に追加してループします。 – user1