2012-10-02 218 views
5
Set mainWB = Workbooks("Copy Paste.xlsb") 
Set mainWS = mainWB.Sheets("Sheet1") 
Set testWS = mainWB.Sheets("Sheet3") 

mainWS.Select 

我一直在Excel VBA中的最後一行得到一個錯誤:對象'_Worksheet'的方法選擇失敗 - 爲什麼?

「對象的方法選擇「_Worksheet失敗」

任何想法,爲什麼或如何解決這一問題?謝謝!

+0

是你的牀單實際名稱爲sheet1 /表Sheet 3刪除功能將無法正常工作?工作簿的名稱是否相同? – enderland

+1

'mainWB'是否有效? –

+2

因此'.Select'應該避免:)看到這個鏈接http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select –

回答

6

正如評論中所述,無法在VBA中選擇不活動的Sheets(或其中的Range對象)。

例如下面的代碼

Sheets(1).Activate 
Sheets(2).Range("A1").Select 

將導致你收到錯誤。

在你的情況,你似乎試圖Select表不活躍 - 你的mainWS對象可能不是ActiveSheet在你調用此代碼的點。一個簡單的方法來測試,如果發生這種情況是如果你添加如下代碼的末尾:

if (ActiveSheet.Name <> mainWS.Name) then 
    msgbox ("Going to crash after clicking ok!") 
end if 
mainWS.Select 

注意,您可以參考激活工作表與命令ActiveSheet要麼獲取屬性或任何其它操作你有興趣做。

如果您通過工作簿中的所有工作表進行循環工作並且存在隱藏工作表,也會發生此錯誤。瞭解這一點。


末,且無關的特定錯誤消息,我假設你正在某處聲明的變量,只是這裏沒有複製它們 - 如果不是我會考慮使用Option Explicit,你可以經常碰到各種各樣的問題沒有Option Explicit在您的VBA代碼的頂部。

+0

優秀的答案。祝賀你的知識和演講。 – NoChance

+0

@NoChance謝謝你的客氣話。 – enderland

1

雖然我同意上述,同樣重要的是要注意,如果工作表的可視性當前設置爲xlSheetVeryHidden

相關問題