【发布时间】:2018-05-08 16:38:03
【问题描述】:
我有两个宏,它们按日期过滤工作表列,然后删除不相关的列。
但是,它有很多错误,我需要一些帮助来纠正它。
这是第二个宏应该做的:
1) 在应用过滤器后只需删除可见行,第一行(标题)除外 - 目前,它会删除包括第一行在内的所有可见行,即使我有 @987654321 @我的代码中的函数。
2) 删除所有过滤器 - 现在可以正常工作了
Sub DeleteVisibleRows()
Dim ws1 As Worksheet
Dim WorkRng As Range
Set ws1 = ActiveWorkbook.Sheets("Consolidated")
On Error Resume Next
Set WorkRng = Application.Selection
Application.ScreenUpdating = False
With ws1
WorkRng.Offset(1, 0).Rows.SpecialCells(xlCellTypeVisible).EntireRow.Delete
ws1.AutoFilterMode = False
End With
Application.ScreenUpdating = True
End Sub
【问题讨论】:
-
问题出在
Set WorkRng = Application.Selection这一行。您应该避免使用Selection并尝试更好地定义您的范围。运行此宏时的Selection是什么?您可以偏移 1,但仍包括标题。此外,On Error Resume Next不是必需的,不重置它会阻止您看到其他错误。 -
@DarrellH 选择是应用第一个宏后过滤的数据。所以我过滤掉前一天的日期,然后显示的数据将成为我的选择。接下来我看到很多人强烈反对错误简历,我不是 vba 编码器,所以我不知道为什么会这样。我能做些什么来代替它?
-
我看到你现在有很多选择。反对
On Error Resume Next的原因是你无法调试你不知道的东西。在某些情况下它是适用的,但你应该知道为什么。 -
@DarrellH 好的,谢谢你的建议 :)