【VBA研究】工作表自动筛选模式检测

作者:iamlaosong

用VBA程序处理Excel数据文件,用户的数据文件有时处于自动筛选模式,往往导致数据处理不正确,为此,需要检测工作表是否处于该模式,如果是,则去掉自动筛选,语句如下:

        If ActiveSheet.AutoFilterMode = True Then Selection.AutoFilter

这个语句一般只用于去掉自动筛选,虽然Selection.AutoFilter也可以加上自动筛选,但筛选位置却可能在当前单元格处,所以要注意,加自动筛选前,现将单元格定位到字段标题处,然后用如下语句:

        If ActiveSheet.AutoFilterMode = False Then Selection.AutoFilter


如果检测其它非活跃的工作表,可以用下面语句:

If Worksheets("sheet1").AutoFilterMode = True Then 

Worksheets("sheet1").Range("A1").AutoFilter 


附:
Range.AutoFilter Method
Filters a list using the AutoFilter.

Syntax

expression.AutoFilter(FieldCriteria1OperatorCriteria2VisibleDropDown)

expression   An expression that returns a Range object.

Parameters

Name Required/Optional Data Type Description
Field Optional Variant The integer offset of the field on which you want to base the filter (from the left of the list; the leftmost field is field one).
Criteria1 Optional Variant The criteria (a string; for example, "101"). Use "=" to find blank fields, or use "<>" to find nonblank fields. If this argument is omitted, the criteria is All. If Operator is xlTop10ItemsCriteria1 specifies the number of items (for example, "10").
Operator Optional XlAutoFilterOperator One of the constants of XlAutoFilterOperator specifying the type of filter.
Criteria2 Optional Variant The second criteria (a string). Used with Criteria1 and Operator to construct compound criteria.
VisibleDropDown Optional Variant True to display the AutoFilter drop-down arrow for the filtered field. False to hide the AutoFilter drop-down arrow for the filtered field. True by default.

Return Value
Variant

Remarks

If you omit all the arguments, this method simply toggles the display of the AutoFilter drop-down arrows in the specified range.

Example

This example filters a list starting in cell A1 on Sheet1 to display only the entries in which field one is equal to the string "Otis". The drop-down arrow for field one will be hidden.

Visual Basic for Applications
Worksheets("Sheet1").Range("A1").AutoFilter _
    field:=1, _
    Criteria1:="Otis", _
    VisibleDropDown:=False



你可能感兴趣的:(【VBA研究】工作表自动筛选模式检测)