#excel #vba
#превосходить #vba
Вопрос:
Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False ' Sorting Application.DeleteCustomList ListNum:=5 Application.AddCustomList ListArray:=Array("FGI Not Shipping Current Quarter" _ , "PENDING 1st TOTE FROM MFG", "PENDING LAST TOTE FROM MFG", "PENDING CRATING", _ "PENDING DN", "PENDING PICKUP REQUEST", "PENDING FF") ActiveWorkbook.Worksheets("Priority").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Priority").Sort.SortFields.Add2 Key:=Range( _ "N2:N16"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ "FGI Not Shipping Current Quarter,PENDING 1st TOTE FROM MFG,PENDING LAST TOTE FROM MFG,PENDING CRATING,PENDING DN,PENDING PICKUP REQUEST,PENDING FF" _ , DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Priority").Sort .SetRange Range("A1:N16") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply
Как я могу написать тот же код для достижения сортировки при выборе вместо явного упоминания диапазона от A1:N16?
Комментарии:
1.
.SetRange Range("A1").CurrrentRegion
(до тех пор, пока ваш список ограничен пустой строкой/столбцом)2. @TimWilliams, Мой список не ограничен. Я попробовал это, и это дает ошибку.
3. Если он не ограничен, то как вы хотите определить, каким должен быть диапазон?
4. Полные данные на листе. Если это невозможно, то как я могу связать свои данные с помощью таблицы? Я также добавил скриншот своих данных. Спасибо вам за помощь.
5. В вашем списке есть пустая строка ниже и пустой столбец справа от нее — это то, что я имел в виду под «ограниченным», поэтому
CurrentRegion
должно сработать. Если это приводит к ошибке, в чем заключается ошибка и в какой строке?
Ответ №1:
Range("A1").Select Range(Selection, Selection.End(xlToRight)).Select Range(Selection, Selection.End(xlDown)).Select Application.CutCopyMode = False Application.DeleteCustomList ListNum:=5 Application.AddCustomList ListArray:=Array("FGI Not Shipping Current Quarter" _ , "PENDING 1st TOTE FROM MFG", "PENDING LAST TOTE FROM MFG", "PENDING CRATING", _ "PENDING DN", "PENDING PICKUP REQUEST", "PENDING FF") ActiveWorkbook.Worksheets("Priority").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Priority").Sort.SortFields.Add2 Key:=Range( _ "N:N"), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _ "FGI Not Shipping Current Quarter,PENDING 1st TOTE FROM MFG,PENDING LAST TOTE FROM MFG,PENDING CRATING,PENDING DN,PENDING PICKUP REQUEST,PENDING FF" _ , DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Priority").Sort .SetRange Range("A1").CurrentRange .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With