2017-10-10 103 views
1

雖然這看起來很基本,但我一直在嘗試在我的宏中的工作簿中選擇某個工作表中的某個單元格時收到錯誤消息。有人知道爲什麼這不起作用嗎?我收到錯誤消息運行時錯誤'1004'。 牀單名稱是「工作表Sheet1」,我的代碼如下:VBA:引用活動工作簿中的工作表

Application.ActiveWorkbook.Worksheets("Sheet1").Range("N2").Select 
+0

選擇第一片'表( 「工作表Sheet」)Select' – user1274820

+0

'Application.Goto(ActiveWorkbook.Sheets( 「工作表Sheet」)範圍( 「N2」))' HTTPS://支持。 microsoft.com/zh-cn/help/291308/how-to-select-cells-ranges-by-using-visual-basic-procedures-in-excel – luke

+0

你的代碼還在做什麼?你能發佈整件事嗎?在此之前可能會發生一些事情,這會給你帶來問題。那麼這將是很好的審查[如何避免使用選擇](https://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba)。 – BerticusMaximus

回答

1

這是不好的做法,使用ActiveWorkbook當你不需要。將工作簿和工作表設置爲可以調用的實際變量總是更好。我認爲你的代碼正在激活另一個工作簿,然後試圖在工作表中選擇一個找不到的範圍。 。

Sub TryThis() 

    Dim wbk As Workbook 
    Dim ws As Worksheet 

    Set wbk = Workbooks("myWorkbook.xlsm") 
    Set ws = wbk.Worksheets("Sheet1") 

    'Now when we say "ws." it is actually "Workbooks("myWorkbook.xlsm").Worksheets("Sheet1")." 

    'This is okay to start with but it's better to work with the cells directly 
    ws.Select 
    Range("N2").Select 
    Selection = "myText" 

    'This is much faster and you won't have to worry about what is currently selected 
    ws.Range("N2") = "myText" 

End Sub 
+0

@ YowE3K好點!更新。 – BerticusMaximus

相關問題