Excel VBA 怎么知道单元格有没有被筛选出来的属性

 我来答
DoramiHe
2018-06-20 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25336 获赞数:59546
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
这个问题,我花了许多时间来研究,终于有所收获,在这里分享给大家。

Excel(2007版) 的筛选对象及其属性关系图可以在这里看到:
http://hi.baidu.com/jamiechen/album/item/e620b7460cf848466963e540.html#

最大的麻烦是:Excel把同一个字段的筛选条件按三种不同的情况建立了不同的对象及属性结构(2003版的可能没有第三种情况,因为2003版最多只能设置2个条件):
1个条件:直接使用 .Criteria1 属性记录此条件;
2个条件:分别直接使用 .Criteria1、.Criteria2 属性记录这两个条件;
3个及以上条件:.Criteria1变成了1个Variant对象,在其下建立 .Criteria(n) 属性集来记录这些条件,不使用 .Criteria2;

所以,在VBA中检查一个Sheet的筛选设置情况有点麻烦,我写的样例代码如下,请参考:

Sub MyMacro1()
Dim i As Integer, j As Integer, Str
'检查是否设置了自动筛选
If ActiveSheet.FilterMode = False Then
MsgBox "没有设置自动筛选,请先设置好了再试!", vbCritical
Exit Sub
End If
'On Error Resume Next
With ActiveSheet.AutoFilter.Filters
'按所有筛选字段检查
For i = 1 To .Count
'检查该字段是否有设置筛选条件
With .Item(i)
If .On Then
Select Case .Count
Case 1 '有一个筛选条件
Str = .Criteria1
MsgBox "第 " & i & " 个字段有筛选条件:" & Str & "(1 of 1)"
Case 2 '有两个筛选条件
Str = .Criteria1
MsgBox "第 " & i & " 个字段有筛选条件:" & Str & "(1 of 2)"
Str = .Criteria2
MsgBox "第 " & i & " 个字段有筛选条件:" & Str & "(2 of 2)"
Case Else '有三个及以及筛选条件
Str = .Criteria1
For j = 1 To .Count
MsgBox "第 " & i & " 个字段有筛选条件: " & Str(j) & " (" & j & " of " & .Count & ")"
Next j
End Select
End If
End With
Next i
End With
End Sub
百事牛
2024-10-22 广告
百事牛是共享提供商,我们提供可靠有效的服务,适当合理的授权费有利于的继续更新优化。同样的事情,同样的方法,百事牛团队十年磨一剑,始终至聚焦在密码恢复领域,深耕于此,我们已研制出有别于其他公司的算法和运算模式, 百事牛的暴力模式加入了分布式点... 点击进入详情页
本回答由百事牛提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式