【发布时间】:2021-02-08 14:32:44
【问题描述】:
我正在尝试从具有自动过滤器的受保护工作表中复制特定范围,该范围内的几行已被过滤掉。 使用以下代码时,仅复制范围内的可见行:
origWB.Sheets("some data").Range("D3:LB77").Copy
targetWS.Cells(3, 4).PasteSpecial xlValues
正如我所说,工作表受到保护(由于各种原因,我无法在宏中取消保护它),所以我不能使用通常可以解决问题的命令:
origWB.Sheets("some data").Range("D3:LB77").EntireRow.Hidden = False
我已经能够取消过滤器:
origWB.Sheets("some data").AutoFilterMode = False
这使我能够复制所有行,但是我不知道如何让过滤器再次工作(因为我需要完全按照我找到它的方式离开工作表)而不会被工作表保护阻止。
我希望有一个解决方案可以暂时删除过滤器并在复制后恢复它,或者一个解决方案可以让我复制所有范围,包括隐藏/过滤的行,而不会弄乱过滤器本身。
【问题讨论】:
-
我实际上知道过滤器设置并且不需要在运行之前捕获它们 - 问题是我无法重新应用过滤器,因为我不允许删除工作表保护。所以问题是,尽管有保护,是否有办法重新激活过滤器
-
使用 SaveCopyAs 保存文件的副本,去掉过滤器并复制范围,然后您可以删除文件的副本。
-
这是个好主意,谢谢!我想我可以做到这一点(如果没有其他问题,我会这样做)但仍然 - 没有更直接的方法吗?像
range(...).copyAll这样的东西,根本不用担心自动过滤器? -
您对不取消保护工作表的限制似乎有点武断 - 为什么不这样做?
标签: excel vba autofilter