2009-11-18 154 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 
相关问题