我是VBA的新手,很抱歉如果問題對於更有經驗的用戶來說是顯而易見的。我試着閱讀類似問題的答案,並解決了問題,但仍面臨同樣的問題。VBA - 選擇方法失敗
我的代碼是:
Workbooks("XXX.xls").Activate
' Setting column width
Workbooks("XXX.xls").Worksheets("XXX").Cells.Select
Selection.ColumnWidth = 10
' Filtering XXX funds
Workbooks("XXX.xls").Worksheets("XXX").Rows("1:1").Select
Selection.AutoFilter Field:=3, Criteria1:="=*XXX*"
' Add new sheet and rename it
Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "XXX_F"
'Copying needed information
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
我得到的錯誤是「運行時間錯誤‘1004’:範圍類的選擇方法失敗」從倒數第三行。我試圖加入這一行(即激活的工作簿我想先工作)來解決它:
Workbooks("XXX.xls").Activate
此外,我在我的代碼使用顯式引用,如:
Workbooks("XXX.xls").Worksheets("XXX").Range("A1:C1").Select
我明白,這最好不要在我的代碼中使用選擇方法。但這不是我第一次遇到這個錯誤,我只想了解VBA的邏輯。據我瞭解Excel只是不明白我指的是哪張表,但我不明白爲什麼 - 因爲我激活了我需要的工作簿(我打開了幾本工作簿)並使用了明確的引用。如果你能詳細解釋爲什麼會出現這個錯誤(即Excel在哪個時間點混淆),我將非常感激!
感謝大家提前的幫助!
只是一個提示 - Excel有一些稱爲實例(如果您使用Excel 2007以上)。我想你的情況你已經開了兩個excel的東西。要修復它,關閉所有excel文件,然後用代碼打開文件,用XXX打開文件,只需單擊鼠標按鈕即可。 – Vityata
此錯誤很可能發生,因爲在您激活工作簿時,您還需要激活工作表,然後才能在該工作表上使用.select方法。所以:'工作表(「XXX」)。activate'我知道你已經說過了,但請記住,使用select語句幾乎總是有更好的方法。 – Jason
您不能選擇活動工作表之外的其他任何東西。最好的做法是重構代碼,以便它不會使用*** Active *或全局對象。獲取對象的引用並使用它們。 – Comintern