2014-09-29 147 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