vba 中的程式碼有時會崩潰

vba 中的程式碼有時會崩潰

我有一個代碼。如果我在儲存格中輸入 Excel 工作簿路徑並點擊按鈕,則該工作簿將打開,並且 B2 中目前工作簿的資料將複製並貼上到新開啟的工作簿中。該代碼運行良好。但問題是程式碼有時會崩潰並拋出錯誤。我無法理解是什麼問題。如果程式碼不好,那麼程式碼永遠不會完美執行。但就我而言,它有時執行得很好,有時會引發錯誤。請幫忙。這是錯誤 -

範圍類別的選擇方法失敗

這是代碼 -

Private Sub CommandButton1_Click()

Dim pathCell As String

pathCell = Range("locationPath").Value


Dim wbTarget As Workbook 'workbook where the data is to be pasted
Dim wbThis As Workbook 'workbook from where the data is to be copied

'set to the current active workbook (the source book)
Set wbThis = ActiveWorkbook

'copy the range from source book
wbThis.Worksheets(1).Range("B1").Copy

'open a workbook that has same name as the sheet name
Set wbTarget = Workbooks.Open(pathCell)

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select

'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

'clear any thing on clipboard to maximize available memory
Application.CutCopyMode = False

Worksheets(1).Activate


End Sub

任何幫助,將不勝感激!

答案1

我認為它在這一行失敗,因為它是唯一包含.Select

'Select the target cell
wbTarget.Worksheets(2).Range("B1").Select
  • 如果該行在運行時Worksheets(2)不是活動工作表,則會失敗並顯示錯誤。您必須在單獨的程式碼行上選擇工作表和範圍。這可能就是為什麼你的巨集只會間歇性出錯的原因。您有時可能會在關閉工作簿之前離開該工作表,而有時則不會。

  • 然而,就貼上操作而言,這似乎沒有任何作用,如果您刪除該行,您的貼上應該同樣有效。

    • 您的後續程式碼行完全限定目標儲存格。
'paste the data on the target book
wbTarget.Worksheets(2).Range("B1").PasteSpecial Paste:=xlPasteAll

如果由於某種原因,您絕對需要在巨集完成時選擇該儲存格,請先選擇工作表;然後選擇單元格。

另請參閱如何避免在 Excel VBA 中使用 Select 在我們的姊妹網站 stackoverflow 上。

相關內容