2014-09-29 127 views
0

我想在excel中创建一个宏来取消隐藏和在两个单独的工作簿中的两张工作表上取消隐藏和未过滤列。它在第一张纸上工作,但由于某种原因,它在第二张纸上不起作用。我真的很困惑,为什么会发生这种情况,任何帮助将不胜感激。取消隐藏和不过滤Excel vba

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 
+0

什么错误信息你好吗?另外,代码在哪里失败? – 2014-09-29 13:14:02

+0

我没有收到任何错误消息。它只是不过滤。我认为它在工作簿(“011高级任务列表v2 ESI.xlsm”)上失败了。激活' – 2014-09-29 13:17:50

+0

您是否尝试单步执行代码以查看是否所有行为都按照您的要求运行? – 2014-09-29 13:25:11

回答

0

要取消过滤数据使用(例如表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 
0

试一试。如果工作表名称是表Sheet 3那么你应该使用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 
+0

这看起来好像可以修复它,但对于有些原因让我的下标超出范围错误。 – 2014-09-29 13:41:42

+0

它发生在第一个With块中。 – 2014-09-29 13:42:03

+0

我敢肯定,如果工作表名称和工作簿名称正确,它将工作 – 2014-09-29 13:48:30