2014-04-04 65 views
0

在我的窗體應用自動過濾器時,沒有與此Click事件的按鈕:運行時錯誤「1004」上隱藏的工作表

Private Sub CommandButton1_Click() 
    Dim rng As Range 

    With ThisWorkbook.Sheets("Data") 
     .AutoFilterMode = False 
     Set rng = Range("A1:B100") 
    End With 

    With rng 
     .AutoFilter 
     .AutoFilter Field:=1, Criteria1:="=1*" 
    End With 
End Sub 

我希望它選擇範圍A1:B100並在字段1上對此範圍應用自動篩選以選擇行號以。

如果工作表數據可見,那麼腳本工作正常。但是,如果我選擇隱藏工作表,則出現此運行時錯誤1004:

該命令無法使用指定的範圍完成。 選擇範圍內的單個單元格,然後再次嘗試該命令。

有人可以幫我解決這個問題嗎?


編輯#1:我想這和腳本的工作:

With ThisWorkbook.Sheets("Data") 
    .Activate 
    .AutoFilterMode = False 
    Set rng = Range("A1:B100") 
End With 

所以也許紙張必須激活之前,我可以在上面做什麼?

回答

1

更改此:

Set rng = Range("A1:B100") 

到:

Set rng = .Range("A1:B100") 

你在ActiveSheet,通常不會是一個隱藏的工作表設置RNG等於Range("A1:B100")第一種方式。我想,你激活隱藏表格的訣竅是出於相反的原因。其實,我從來沒有嘗試過激活隱藏表格。

我的建議是指定rng位於「數據」中。它符合範圍,就像你用AutofilterMode and the other properties inside your With`聲明一樣。

無論如何,您通常希望在代碼中避免Activates,原因是在其他一些SO帖子和其他地方討論過。

+1

只是一個小點,但你爲我節省了很多頭痛。我還刪除了'.Activate'方法,就像你告訴我的一樣。非常感謝您的幫助! – Teiv