2009-11-18 148 views
0

我想創建一個從一個工作表上的單元格到另一個工作表上的單元格的鏈接,但是當我運行它時,我得到這個運行時錯誤:Excel VBA pastelink運行時錯誤1004:應用程序定義的或對象定義的錯誤

應用程序定義或對象定義的錯誤。

下面是代碼:

Worksheets(sheetFrom).Cells(fromRow, fromCol).Copy 
Worksheets(sheetTo).Cells(toRow, toCol).Select 
ActiveSheet.Paste Link:=True 

我檢查到/從價值觀和他們是正確的。

3更新 看起來像它的單元格選擇導致的問題。

更新2當發單與紙單相同時,沒有問題。我錯過了什麼?

回答

2

您正在收到該錯誤,因爲當您嘗試粘貼時,工作表(sheetTo)不是活動工作表。

如果添加一行代碼

Worksheets(sheetFrom).Cells(fromRow, fromCol).Copy 
Worksheets(sheetTo).Activate 
Worksheets(sheetTo).Cells(toRow, toCol).Select 
ActiveSheet.Paste Link:=True 

它的工作原理。

編輯迴應guitarthrower的回答是:

粘貼鏈接,據我所知,只有Worksheet.Paste工作,不Range.Paste。 Worksheet.Paste將鏈接粘貼到活動單元格中。雖然我同意你應該避免選擇,但使用這種類型的代碼似乎需要它。

另一種方法是創建公式,而不是粘貼鏈接:

Worksheets(sheetTo).Cells(toRow, toCol).Formula = _ 
    "=" & Worksheets(sheetFrom).Name & "!" & Worksheets(sheetFrom).Cells(fromRow, fromCol).Address 
+0

啊,我明白了。 我認爲選擇自動激活當前工作表,我猜不是。 – 2009-11-18 12:17:59

1

我嘗試使用選擇遠離。它可能會導致代碼流中出現問題,並且以後難以調試。

爲什麼不嘗試:

Worksheets(sheetFrom).Cells(fromRow, fromCol).Copy 
Worksheets(sheetTo).Cells(toRow, toCol).Paste Link:=True 
相關問題