如何在VBA中应用自动筛选条件后取消选择范围?

时间:2017-06-29 15:27:03

标签: excel vba excel-vba select autofilter

我有一个VBA子程序,它使用AutoFilter方法对范围进行排序(实际上,它在不同的工作表中对多个不同的范围进行排序。它还调用另一个子程序,后者又调用其他子程序等。)

无论如何,我注意到以下奇怪的问题:

当我运行这个子程序(从另一个工作表上的一个按钮调用)时,它运行正常,并完成我想要它做的所有事情。但是,在它运行之后,它会离开整个范围,它会在所选范围内执行AutoFilter.Sort。

尽管事实上我没有在我的代码中的任何地方选择。(我尽量避免使用.Select尽可能选择。)

此外,如果我使用F8逐行遍历代码,则不会发生这种情况!如果我使用F5从VBA内运行子程序,它也不会发生!只有在从按钮点击调用子程序并允许其不间断地运行时才会发生这种情况。

以下是运行Autofilter.Sort的相关代码部分:

'Sort data on Production sheet
With Sheet07.AutoFilter.Sort
    .SortFields.Clear
    .SortFields.Add Key:=Range("P21:P54"), SortOn:=xlSortOnValues, _
        Order:=xlDescending, DataOption:=xlSortTextAsNumbers    'Need to remove hard-coded cell reference
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

之前有没有人遇到过这个问题?是否有一种简单的方法来修复它而不使用.Select?

提前致谢。

0 个答案:

没有答案