VBA宏与手动过滤的结果不同

问题描述 投票:0回答:1

我已经使用VBA编写了宏,但是使用宏时得到的结果与手动过滤时得到的结果不同。代码中是否有什么错误会导致其无法正常运行?有些列具有多个条件,而仅使用“记录宏”功能就无法做到。我不确定是否要使用数组。列号都是正确的,或者使用row1中的列标题会更好吗?

Sub Debut()
'
' DebutDestroyer Macro
' This macro will filter for VDW Win %, Class, VDW Form, RP Rating, J&T, Race Type and Contender
'
Dim last As Long
last = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
    With ActiveSheet.Range("A1:BU" & last)
    .AutoFilter Field:=7, Criteria1:="Flat Turf"
    .AutoFilter Field:=7, Criteria1:="NH Flat"
    .AutoFilter Field:=7, Criteria1:="Hurdle Turf"
    .AutoFilter Field:=7, Criteria1:="Hunter Chase"
    .AutoFilter Field:=10, Criteria1:="1"
    .AutoFilter Field:=10, Criteria1:="2"
    .AutoFilter Field:=10, Criteria1:="3"
    .AutoFilter Field:=10, Criteria1:="4"
    .AutoFilter Field:=38, Criteria1:="100"
    .AutoFilter Field:=43, Criteria1:="0"
    .AutoFilter Field:=43, Criteria1:="1"
    .AutoFilter Field:=71, Criteria1:="="
    .AutoFilter Field:=41, Criteria1:=">=30"
    .AutoFilter Field:=41, Criteria1:="0"
    .AutoFilter Field:=41, Criteria1:="="
    .AutoFilter Field:=5, Criteria1:=">=80"
    .AutoFilter Field:=50, Criteria1:="1"
    .AutoFilter Field:=50, Criteria1:="2"
    .AutoFilter Field:=50, Criteria1:="3"
        End With
End Sub
excel vba
1个回答
0
投票

多次操纵每一列的Criteria1造成了我想的问题。而不是像这样在每一行中设置它:

    .AutoFilter Field:=10, Criteria1:="1"
    .AutoFilter Field:=10, Criteria1:="2"
    .AutoFilter Field:=10, Criteria1:="3"
    .AutoFilter Field:=10, Criteria1:="4"

您可以将其替换为值数组:

    .AutoFilter Field:=10, Criteria1:=Array("1", "2", "3", "4"), Operator:=xlFilterValues
© www.soinside.com 2019 - 2024. All rights reserved.