当工作表有过滤器时,为什么 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? 的相关文章

  • 在 Django(Python) 中向用户提供 Excel(xlsx) 文件下载

    我正在尝试使用 Django 创建和提供 Excel 文件 我有一个 jar 文件 它获取参数并根据参数生成 excel 文件 并且它可以正常工作 但是 当我尝试获取生成的文件并将其提供给用户下载时 文件损坏了 它的大小为 0kb 这是我用
  • 获取给定日期的周数

    例子 DD MM YYYY 1 1 2009 should give 1 31 1 2009 should give 5 1 2 2009 should also give 5 Format 1 2 2009 ww 回报6 那么 怎样才能得
  • 如何从另一个 Excel 实例引用工作簿

    我相信我的问题相当简单 我有一个工作簿 我正在使用它从另一个软件 SAP 获取一些数据 当我从软件导出数据时 它会自动打开一个 xlsx 文件 然后我需要做的是从该文件复制一些数据 粘贴到我的原始工作簿上 然后关闭该文件 我的代码中给我带来
  • 关闭工作簿时删除范围,xls vba

    我想要范围 Range A2 G z 关闭工作簿时删除 有人可以帮我处理代码吗 谢谢 凯 这就是我尝试过的 Option Explicit Sub Makro1 insert clipboard Workbooks Pfl SchutzSt
  • 如何暂停特定时间? (Excel/VBA)

    我有一个 Excel 工作表 其中包含以下宏 我想每秒循环一次 但如果我能找到执行此操作的函数 那就很危险了 难道不可能吗 Sub Macro1 Macro1 Macro Do Calculate Here I want to wait f
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些
  • 如果一个数字写在方括号中,例如[5],这意味着什么

    我正在开发一个旧版 VBA Excel 应用程序 并偶然发现了一些代码行 其中长字符串 从文件中读取 被切成碎片 这些行看起来像这样 Range E16 Value Mid line 49 6 显然 写 6 意味着需要 6 个字符 但我从未
  • VBA全局类变量

    我的障碍是试图让多个子程序识别类变量 当我尝试全局声明它们时 出现编译错误 无效的外部过程 然后 当我运行公共函数或子函数来声明变量时 它们在其他子函数中保持未定义状态 我希望多个子程序能够识别变量 因为它们的值应该通过用户窗体进行更改 然
  • 强制刷新工作表的“最后一个”单元格

    Pressing Ctrl End in Excel takes you to the bottom right most cell of the worksheet 如果删除最后的行或列并保存工作簿 最后一个单元格以及滚动条都会更新 我记
  • VBA 中的求和函数

    我在 vba 中对单元格求和时遇到问题 我需要使用单元格 a b Range A1 function SUM Range Cells 2 1 Cells 3 2 但它不起作用 函数不是范围内的属性 方法 如果您想对值求和 请使用以下命令 R
  • 使用 C# 在 Excel 中查找和替换文本

    我想使用 C 在 Excel 中查找并替换一组文本 而且我希望此替换仅发生在第一行中的文本 我已经使用Google并找到了一些付费资源 例如Aspose API Spire Xls等 但我正在寻找开源资源或任何其他有效的方法来实现这一目标
  • 使用 PHP 代码和 HTML 表单将 Excel (.csv) 导入 MySQL

    我知道还有其他类似的帖子 但每个人都建议直接在 PHPMyAdmin 中将其导入 MySQL 这工作完美 但我需要通过 HTML 表单导入 PHP 到 MySQL 我想要一个收集文件的 HTML 表单 然后将该文件传递给 PHP 脚本 我想
  • Excel Add In - console.log 在哪里输出它的消息 - NodeJS

    我正在尝试使用 JavaScript API 创建 Excel 插件 但我不明白 console log 在哪里输出它们的消息 所有 Microsoft 文档都包含 console log 示例 但没有解释 console log 输出消息
  • 查找最后一列并按最后一列排序

    我需要 Excel 来检测我拥有的最后一列并对该列进行排序 我有一个宏 每次使用它时都会生成一个新列 因此我无法使用常量 Sub sortyness Dim sortdata A1 Cells LastRow LastColumn As R
  • Excel,循环遍历 XLSM 文件并将行复制到另一个工作表

    我现在遇到的此代码的主要问题是处理我打开的 xlsm 文件的错误 我对这些文件的 VB 代码没有编辑权限 如果 vb 出错 有没有办法跳过文件 我有一个包含大约 99 个 xlsm 文件的文件夹 我希望循环遍历每个文件并复制每个工作簿中的第
  • 如何根据文本框值过滤列表框值

    我在用户窗体上有一个文本框和一个列表框 我想根据我在文本框中输入的值过滤列表框中的值 名为 TMP 的工作表具有值 我根据文本框更改事件对其进行过滤 但在将该值添加到列表框中时它 会自动退出 Private Sub Textbox1 Cha
  • 以独立于区域设置的方式读取 Excel 文件

    我使用以下代码从各种 Excel 文件读取数据 IMEX 1 to force strings on mixed data HDR NO to process all the available data Locale 1033 is en
  • 将 CSV 导入 Excel - 自动“文本到列”和“插入表格”

    我想在 Excel 2010 上打开 CSV 逗号分隔 文件并自动将文本转换为列 然后选择所有活动单元格并插入带标题的表格 是否可以在我的功能区中添加一个按钮来为我完成这一切 我经常使用不同大小的 CSV 文件 我发现每次手动执行此操作有点
  • 在适用于 Windows 和 Mac 的 VBA 中指定用户文件夹的路径

    我正在编写一个使用 VBA 从 Excel 生成文件的工具 生成的文件将写入用户的 Documents 文件夹中的文件夹 如果存在 e g C Users
  • 以编程方式将参数传递到访问报告中

    我有一个现有的 Access MDB 我正在向运行现有报表的现有表单添加一个命令按钮 所做的更改是 此按钮需要传入一个包含正在报告的记录 ID 的参数 当前报告在 MDB 中的每条记录上运行 我已经更改了报告运行的查询 以使用 ID 值参数

随机推荐

  • 使用 @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