2014-09-26 157 views
0

我想设计一个宏,它将简单地关闭某个工作簿上的过滤。我已经开始编写代码,但由于某种原因,在第一行的注释下它会导致应用程序或对象定义的错误。我真的很困惑为什么会这样。我已经发布了下面的代码。任何帮助将不胜感激。Excel VBA Unfiltering宏

Sub crossUpdate() 

Dim rng1 As Range, rng2 As Range, rng1Row As Range, rng2Row As Range, Key As Range, match As Integer 

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

'Unhide and Unfilter columns and rows on original sheet 
With Sheets("Development Priority List").Cells 
.EntireColumn.Hidden = False 
.EntireRow.Hidden = False 
.AutoFilter 
End With 
+0

摆脱ActiveWorkbook部分。一旦激活该工作簿,只使用工作表参考应该没问题。如果您想继续使用ActiveWorkbook,则必须明确说明表单名称。像ActiveWorkbook.Sheets(“无论表名是什么”)。EntireColumn.Hidden = False – sous2817 2014-09-26 20:26:49

+0

它仍然给我的对象定义的错误。我对上面的代码进行了更改。 – 2014-09-26 20:33:11

+0

此代码适用于我,所以它可能是别的。您的工作簿/工作表/单元格是否受到任何方式的保护?您的代码还存储在哪里 - 它应该位于“标准”模块中,而不是“表格”模块中。也许还尝试保存/关闭/重新打开您的工作簿? – barryleajo 2014-09-26 21:28:23

回答

0

试试这个,修改代码线以下类似:

ActiveWorkbook.Sheets("Sheet3").Cells.EntireColumn.Hidden = False 

为了节省自己一些打字,你也可以考虑:

With ActiveWorkbook.Sheets("Sheet3").Cells 
.EntireColumn.Hidden = False 
.EntireRow.Hidden = False 
.AutoFilter 
End With 
+0

它仍然在说同样的错误。 – 2014-09-26 20:16:09

+0

您需要确定哪一列和哪一行 – barryleajo 2014-09-26 20:19:19

+0

为什么我需要这样做?我想取消隐藏和取消所有这些。 – 2014-09-26 20:21:14

0
With ActiveSheet 
    .AutoFilterMode = False 
    .Cells.EntireRow.Hidden = False 
    .Cells.EntireColumn.Hidden = False 
End With