【问题标题】:Unhiding and unfiltering excel vba取消隐藏和取消过滤excel vba
【发布时间】:2014-09-29 13:01:17
【问题描述】:

我正在尝试在 excel 中创建一个宏来取消隐藏和取消过滤两个单独工作簿中两张工作表上的行和列。它适用于第一张纸,但由于某种原因它不适用于第二张纸。我真的很困惑为什么会这样,任何帮助都将不胜感激。

Sub Unfilter()
Workbooks("011 High Level Task List v2.xlsm").Activate
Sheet3.Activate

'Unhide and Unfilter columns and rows on original sheet
With ActiveSheet
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
.AutoFilterMode = False
End With

Workbooks("011 High Level Task List v2 ESI.xlsm").Activate
Sheet3.Activate
'Unhide and Unfilter columns and rows on update sheet
With ActiveSheet
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
.AutoFilterMode = False
End With

End Sub

【问题讨论】:

  • 您收到了哪些错误消息?另外,代码到底哪里出错了?
  • 我没有收到任何错误消息。它只是没有取消过滤。我认为它在Workbooks("011 High Level Task List v2 ESI.xlsm").Activate 线上失败了
  • 您是否尝试单步执行您的代码以查看是否一切都如您所愿?
  • 告诉我工作表名称? ..
  • 它们都是 Sheet3,只是在不同的工作簿中。

标签: vba excel filter


【解决方案1】:

试试这个.. 如果工作表名称是 sheet3 那么你应该使用SHeets("Sheet3").activate

Sub Unfilter()
Dim wb1 As Workbook
Dim wb2 As Workbook

Set wb1 = Workbooks("011 High Level Task List v2.xlsm")

With wb1.Sheets("Sheet3")
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
.AutoFilterMode = False
End With

Set wb2 = Workbooks("011 High Level Task List v2 ESI.xlsm")

With wb2.Sheets("Sheet3")
.Cells.EntireColumn.Hidden = False
.Cells.EntireRow.Hidden = False
.AutoFilterMode = False
End With

End Sub

【讨论】:

  • 这看起来会修复它,但由于某种原因它给了我一个下标超出范围的错误。
  • 它发生在第一个 With 块中。
  • 我确定..如果工作表名称和工作簿名称正确,它将起作用
  • 我输入了错误的工作表名称,哎呀。它不再给我下标错误,但它现在给了我一个对象定义的错误......
  • 哪里..在哪一行?
【解决方案2】:

要取消过滤数据使用(例如表 1):

Worksheets("Sheet1").ShowAllData

如果数据尚未过滤,您将需要对其进行测试或仅在出现以下错误时恢复:

On Error Resume Next
Worksheets("Sheet1").ShowAllData

完整代码

Sub Unfilter()
    Dim wbk1 As Workbook
    Set wbk1 = Workbooks("011 High Level Task List v2.xlsm")

    On Error Resume Next
    wbk1.Worksheets("Sheet3").ShowAllData


    Dim wbk2 As Workbook
    Set wbk2 = Workbooks("011 High Level Task List v2 ESI.xlsm")

    On Error Resume Next
    wbk2.Worksheets("Sheet3").ShowAllData
End Sub

【讨论】:

    猜你喜欢
    • 2017-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多