excel - ActiveSheet.ShowAllData 在 2 台机器上返回不同的结果
问题描述
我有一些宏可以按一列过滤所有数据(250 行),然后删除过滤后隐藏的数据。
下一步是使用 ActiveSheet.ShowAllData 取消过滤整个工作表。
奇怪的是,在我的机器上取消过滤后我使用的范围似乎是 200 行(50 行已被删除)。
然而,在另一台具有相同 Excel 版本(Office365)的机器上,在取消过滤和删除 50 行后,可见范围为 1,048,576 行(这几乎会弄乱进一步的自动填充等)
代码如下:
Dim lastRow As Long
Dim iCntr As Long
Range("A:AI" & Lines).AutoFilter Field:=32, Criteria1:= _
"2611"
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For iCntr = lastRow To 1 Step -1
If Rows(iCntr).Hidden = True Then Rows(iCntr).EntireRow.Delete
Next
ActiveSheet.ShowAllData
解决方案
我建议在一个变量中收集所有需要删除的行,RowsToDelete
然后在一次删除所有行之前显示所有数据。不确定这是否最终解决了您的问题,但至少这比删除每一行要快得多。
Option Explicit
Public Sub DeleteAllHiddenRows()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim LastRow As Long
LastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
ws.Range("A:AI").AutoFilter Field:=32, Criteria1:="2611"
Dim RowsToDelete As Range
Dim iRow As Long
For iRow = 1 To LastRow
If ws.Rows(iRow).Hidden Then
If RowsToDelete Is Nothing Then
Set RowsToDelete = ws.Rows(iRow)
Else
Set RowsToDelete = Union(RowsToDelete, ws.Rows(iRow))
End If
End If
Next iRow
ws.ShowAllData
RowsToDelete.EntireRow.Delete
End Sub
推荐阅读
- python-3.x - python中的月到日期为通用方式
- yarnpkg - Yarn 工作空间检测到包,但纱线工作空间没有
- javascript - jQuery切换 - 如何启用淡入淡出效果
- javascript - 样式化 LightningChart JS 图表
- powershell - 即使设置了 -whatif 属性,是否有办法将 powershell 日志记录到文本文件中?
- rest - JWT 好像不安全?不是吗?
- python - Pyqt5 小部件使用 GridLayout 转移到中心
- c - 我的 Cs50 问题集 2 代码存在随机字母变为空白的问题。我该如何解决?
- php - Laravel (cli) 使用 php 5.4 而不是 7
- javascript - 如何在javascript中添加事件监听器