当工作表有过滤器时,为什么 ActiveSheet.FilterMode 返回 False?

2024-01-07

我使用以下代码尝试检测应用于表中列的过滤器,然后清除过滤器:

If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData

根据微软文档:

如果工作表包含其中包含隐藏行的筛选列表,则此属性为 true。

自从那以后情况似乎并非如此ActiveSheet.Filtermode只返回True如果选择了表格内应用过滤器的单元格。

  • 第一个问题:文档是否错误?文档 https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet.filtermode.aspx

  • 第二个问题:我唯一的选择是选择表格内的单元格以使表达式返回 True 吗?

PS我使用的是Excel 2010

编辑:回答问题 2,基于非选择的清除过滤器的方法...

If ActiveSheet.ListObjects(1).Autofilter.FilterMode Then ActiveSheet.ListObjects(1).Autofilter.Showalldata


我可以在 Excel 2013 上复制您的两个问题:两个都有问题False on FilterMode和错误ShowAllData.

对于文档是否有误,我想说的是missing有资格说ActiveCell应该在ListObjects DataBodyRange。也许文档是正确的,但这是一个尚未解决的错误。也许您可以通过文档链接来更新您的问题?

关于你的第二个问题 - 我同意使用此解决方法是最明显的解决方案。使用起来似乎有点不爽Select但有时我想这是无法避免的。

这就是我使用的方法Intersect函数来检查它ActiveCell目前位于该地区DataBodyRange of the ListObject:

Option Explicit

Sub Test()

    Dim rng As Range
    Dim ws As Worksheet
    Dim lst As ListObject

    'get ActiveCell reference
    Set rng = ActiveCell

    'get reference to Worksheet based on ActiveCell
    Set ws = rng.Parent

    'is there a Listobject on the ActiveCells sheet?
    If ws.ListObjects.Count > 0 Then
        Set lst = ws.ListObjects(1)
    Else
        Debug.Print "No table found"
        Exit Sub
    End If

    'is cell is in the DataBodyRange of ListObject?
    If Intersect(rng, lst.DataBodyRange) Is Nothing Then
        'set the ActiveCell to be in the DataBodyRange
        lst.DataBodyRange.Cells(1, 1).Select
    End If

    'now you can safely call ShowAllData
    If ws.FilterMode = True Then
        ws.ShowAllData
    End If

End Sub

Edit

进一步@orson 的评论:

如果您跳过 If Intersect(rng, lst.DataBodyRange) Is Nothing Then 并使用 If lst.AutoFilter.FilterMode Then lst.AutoFilter.ShowAllData End If ,会发生什么?

因此,您可以检查FilterMode of the ListObject本身然后只要你有一个参考ListObject你可以使用他的代码:

If lst.AutoFilter.FilterMode Then 
    lst.AutoFilter.ShowAllData 
End If
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当工作表有过滤器时,为什么 ActiveSheet.FilterMode 返回 False? 的相关文章

  • 如何模拟“焦点”和“打字”事件

    尝试模拟 onfocus 和打字事件 但它不起作用 Sub Login MyLogin MyPass Dim IEapp As InternetExplorer Dim IeDoc As Object Dim ieTable As Obje
  • 如何在VBA编辑器中跳转到行号?

    我在 Office 2010 中使用 VBA 在顶部 有一个带有行号和列号的框 例如 Ln 1480 Col 17 有没有办法在代码编辑中 而不是在执行中 直接跳转到另一个行号 就像我使用的那样Ctrl G在记事本中 这个MSDN答案 ht
  • 当时间为 00:00 时,Pandas 读取 excel 返回类型对象

    在更新版本的 Pandas 中 我使用的是 1 2 3 当从 Excel 文件读取时间时 时间为 00 00 00 时会出现问题 下面的脚本 其中 filepath 是我的 Excel 文件的路径 其中包含一个标题名为 Time 的列 im
  • Excel 工作簿 - 从 C# 读取速度非常慢?

    正在尝试读取 Excel 工作簿 发现读取 3560 行 7 列的工作表需要很长时间 大约需要 1 分 17 秒 我所做的就是循环遍历整个工作表并将值存储在列表中 这是正常现象 还是我做错了什么 static void Main strin
  • Office excel将CORS请求作为跨域请求

    我正在尝试从我的 Excel 插件发出跨域请求 正如这里所建议的 http dev office com docs add ins develop addressing same origin policy limitations http
  • 如何找到特定程序的安装目录?

    我已经成功地编写了一些用于工作的 VBA 宏 这些宏基本上创建了一个数据文件 将其提供给一个程序并对该程序的输出进行后处理 我的问题是程序安装路径是硬编码在宏中的 并且安装在我同事的计算机上可能会有所不同 我首先想到的是 我可以从每个人那里
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • 使用 ObjPtr(Me) 返回自定义类实例的名称?

    我明白那个ObjPtr http support microsoft com kb 199824将返回内存中对象的地址 并且它指向一个名为 IUNKNOWN 的结构 并且其中编码了某种接口定义以公开对象结构 但我不知道如何确定一个对象的接口
  • VBA 完成 Internet 表单

    我正在寻找将 Excel 中的值放入网页的代码 Sub FillInternetForm Dim IE As Object Set IE CreateObject InternetExplorer Application IE naviga
  • 将包含宏的工作簿复制到不带宏的工作簿

    我能够复制工作簿 复制到所需位置 其中在后台包含宏 该副本还包含相同的宏 我的问题是我不希望这个重复的工作簿包含宏 谁能告诉怎么做吗 先感谢您 将您的工作簿保存为无宏 即简单地保存为 Excel 工作簿 对于我的 Excel 2007 这是
  • VBA 中 AND 函数如何工作?

    如果这是一个愚蠢的问题 我很抱歉 但是 Excel VBA AND 函数是否检查其中的每个条件然后继续 或者在第一个 FALSE 条件处停止而不检查其他条件 我想知道出于优化目的 但到目前为止在网上没有找到任何相关信息 提前致谢 示例 如果
  • Excel 数字缩写格式

    这是我想要完成的任务 Value Display 1 1 11 11 111 111 1111 1 11k 11111 11 11k 111111 111 11k 1111111 1 11M 11111111 11 11M 11111111
  • 标志状态的 VBA 替换

    根据文档 Outlook 中的 MailItem FlagStatus 属性是已弃用 https msdn microsoft com en us library microsoft office interop outlook maili
  • 在 PYTHON 中读取 EXCEL 时,“utf-16-le”编解码器无法解码字节

    我正在尝试读取不同语言 阿拉伯语 希腊语 意大利语 希伯来语等 的各种数量的 xls 文件 当我尝试调用 open workbook 函数时 出现如下所示的错误 不知道如何将格式设置为任何语言 Code book xlrd open wor
  • Android Excel CSV 的 MIME 数据类型是什么?

    我尝试了 text csv 甚至 application vnd ms excel 但 Excel 不会显示在选择列表中 很多其他应用程序也可以 void shareCsv Uri uri Context context Intent in
  • C# 无法将欧元符号打印到文件中(使用 Excel 打开时)

    我在使用 Web api 控制器的 get 方法时遇到问题 此方法返回一个 HttpResponseMessage 对象 该对象具有带有 csv 文件的 HttpContent 其中包含欧元符号 当该方法返回文件时 不会打印欧元符号 该方法
  • 如何使用 VBA 添加 MS Outlook 提醒事件处理程序

    我想扩展 MS Outlook 以便当弹出日历提醒时 我可以运行一个可以运行外部程序 如批处理脚本 的 VBA 挂钩 就我而言 我想将提醒 转发 到 Linux 桌面 因为我在这两种环境中工作 并且 Windows 桌面并不总是可见 我看到
  • 在 Excel 中使用 VBA 设置图像透明度

    有没有办法使用 VBA 脚本对图像应用一些透明度 我录制了一个 宏 但似乎没有录制艺术效果 我已经找到了如何制作形状 但没有找到图像 这需要几个步骤 将自选图形 如矩形 放置在工作表上 使用以下方法将您的实际图片嵌入矩形中 ShapeRan
  • 使用 split 函数到数组中会导致编译错误:无法分配给数组

    我正在尝试使用split 函数根据给定名称字符串中的空格拆分名称 当尝试编译我在下面编写的代码时 出现编译错误 无法分配给数组 我几乎从这里复制了微软的示例 https support microsoft com en us kb 2662
  • 如何使用vba复制Excel工作表中的动态范围

    我试图使宏中的范围是动态的 而不指定最后一行x Sheets SheetName Range A2 K1000 Copy在 1000 行中 我想将其更改为动态 因为有时我的数量会更少或更多 尝试这个 Sub Test Dim lRow as

随机推荐

  • 使用 @Json.Encode 时隐藏模型中的字段

    在我的 ASP NET MVC4 应用程序中 我的模型定义如下 public class Employee BaseObject JsonIgnore public string FirstName get set JsonIgnore p
  • 预训练 Keras Xception 和 InceptionV3 模型

    我正在尝试使用 Keras 及其预构建的 ImageNet CNN 架构来解决一个简单的二元分类问题 对于 VGG16 我采取了以下方法 vgg16 model keras application vgg16 VGG16 Rebuild t
  • 减速器可以监听其他动作吗?

    目前 我正在创建操作 然后创建一个减速器来处理我的应用程序的不同部分 不同的域 我的应用程序列出了班级和学生 目前 我有一个应用程序已加载的操作 以便我知道何时删除加载微调器 我有针对班级和学生的操作 我的问题是 我发现我需要连续执行多个操
  • 我们可以在模拟器中测试Face ID吗?

    我们可以使用模拟器测试生物识别身份验证吗 iPhone X 模拟器显示 Face ID 注册菜单 但启用后我能做什么 它如何识别人脸进行身份验证 模拟器无法识别脸部 但允许您模拟匹配和不匹配的脸部 如果您已启用 Enrolled选项来自Fa
  • 响应式布局上的固定边距?

    简而言之 我正在开发带有列和行的响应式网页布局 每个列的宽度设置为与预定义的总宽度相关 列宽 总宽度 宽度 并且高度是固定的 现在的问题是 我希望内容宽度是流动的 但边距和填充是固定宽度 如下所示 代码看起来像这样 HTML div Lef
  • 如何在 IOS Xamarin.Forms 中将内容页面添加到段控件

    我在我的应用程序中使用了分段控制 我不知道如何像选项卡式页面一样将两个内容页面添加到Segment控件中 我已附上示例文件 请提出任何建议示例应用程序链接 https drive google com open id 1 lCg rQFFH
  • 无法使用 clang 和 libc++ 链接 libFuzzer.a

    我正在尝试链接在一起 libFuzzer a 用 clang 5 0 编译和 std c 11 我的模糊驱动程序 用 clang 5 0 编译并且 std c 11 stdlib libc libcurl 使用 clang 5 0 编译 具
  • Akka Actor - 等待一段时间等待消息,否则发送消息

    是否有可能制作一个Actor等待 X 秒来接收任何消息 如果收到消息 则照常处理它 否则将消息发送给其他人Actor 在构造函数中预先确定 有可能 看看Akka Actor 询问 和 等待 带有 TimeoutException https
  • 确定两个图是否同构的算法

    免责声明 我是图论方面的新手 我不确定这是否属于 SO Math SE 等 给定2个邻接矩阵A和B 如何确定A和B是否同构 例如 A和B不是同构的 C和D是同构的 A 0 1 0 0 1 1 B 0 1 1 0 0 0 1 0 1 0 0
  • Oracle唯一约束和主键不为空

    表可以有主键属性和对另一个属性的唯一约束吗 我有以下内容 CREATE TABLE BRANCH BRA CODE NUMBER NOT NULL PRIMARY KEY BRA NAME VARCHAR 15 BRA ADDR VARCH
  • MySQL:如何在 SQL 查询中为每个结果插入一条记录?

    说我有一个选择 SELECT DISTINCT id customer id domain FROM config WHERE type foo 它返回一些记录 如何为结果集中的每一行执行插入操作 例如 INSERT INTO config
  • 用一种语言编写的代码如何从另一种语言调用

    这是我一直想知道答案 却从未真正问过的问题 由一种语言 尤其是解释性语言 编 写的代码如何被编译语言编写的代码调用 例如 假设我正在用 C 编写一个游戏 并且我外包了一些要在 Scheme 中编写的 AI 行为 用Scheme编写的代码如何
  • opencv,findContour错误(windows断点),c ++,ms Visual studio 2010,win7,64位

    我在 opencv org 上问过这个问题 但没有任何运气 所以我希望这里有人可以帮助我 我正在开发面部 眼睛跟踪软件 测量眼睛的某些值 例如眨眼 但是当我想使用该方法时 cv findContour 程序崩溃并显示 Windows 在 e
  • Windows 启动时在后台运行批处理文件

    每次 Windows 启动时如何运行批处理文件 我还需要在后台运行它 不显示该命令窗口 我使用Windows XP 我的实际要求是我想在 Windows 启动时使用命令行命令启动 Tracd 服务器 将您的程序添加到registry htt
  • PHP 立即回显

    我有一个很长的数据挖掘脚本 在其中的一部分中 我将一些信息回显到页面 实际上是在 foreach 循环期间 然而 我注意到信息并没有像我希望的那样立即发送到浏览器 而是以 分段 的形式发送到浏览器 在 echo 后是否可以使用某些功能立即将
  • 在 Spark Streaming 中,我必须在 cache() 或 persist() 之后调用 count() 才能强制缓存/持久性真正发生吗?

    观看关于 Spark 内部结构的非常好的视频 演示者说 除非在缓存 RDD 后对其执行操作 否则缓存不会真正发生 我从未见过在任何其他情况下调用 count 所以 我猜测他只是在 cache 之后调用 count 来强制他给出的简单示例中的
  • Bootstrap 响应式所见即所得编辑器不会将输入数据发送到 php

    我在用着this http www jqueryscript net text Responsive WYSIWYG Text Editor with jQuery Bootstrap LineControl Editor html所见即所
  • Sitecore:按字段选择项目:TreelistEx

    我有名为 MyItems 的 Sitecore 文件夹 其中包含 MyItem 类型的项目 我需要使用 sitecore 查询或 xpath 从 net 代码查询项目 MyItem 具有 TreelistEx 类型的字段 MyField 我
  • 如何通过 JavaScript 清除 Firefox 的控制台?

    我有一些函数在执行时会显示一些信息控制台 log 这没有问题 但是 有时 控制台看起来很奇怪 因此 他们让我在按 l 小写字母 L 时清除控制台 我把它当作一个简单的任务 我只需要使用控制台 clear 一切都会好起来的 但是 我只是想 c
  • 当工作表有过滤器时,为什么 ActiveSheet.FilterMode 返回 False?

    我使用以下代码尝试检测应用于表中列的过滤器 然后清除过滤器 If ActiveSheet FilterMode Then ActiveSheet ShowAllData 根据微软文档 如果工作表包含其中包含隐藏行的筛选列表 则此属性为 tr