我想将链接从一张纸粘贴到另一张纸上
Range("A1:D1").Select
Range("D1").Activate
Selection.Copy
Sheets("Sheet2").Select
ActiveSheet.Paste Link:=True
但是,代码会使工作表从 Sheet1 切换到 Sheet2。无论如何,我可以在不切换工作表的情况下粘贴链接吗?
谢谢。
这将起作用:
ThisWorkbook.Worksheets("Sheet2").Range("D1").Formula = "=Sheet1!D1"
我想这就是你正在尝试的?
Sub Sample()
Dim i As Long
For i = 1 To 4
Sheets("Sheet2").Cells(1, i).Formula = "=Sheet1!" & _
Split(Cells(, i).Address, "$")(1) & "1"
Next i
End Sub
此代码将与您的代码片段执行相同的操作,而无需更改活动工作表。
Range("A1:D1").Copy
Worksheets("Sheet2").Paste Link:=True
请注意,这(和您的代码)将从活动工作表中复制。如果要从活动工作表以外的工作表复制,请使用类似
Worksheets("Sheet1").Range("A1:D1").Copy
Worksheets("Sheet2").Paste Link:=True
我刚才也遇到了同样的问题。那时我才意识到,当我尝试运行我的代码时,TightVNC 已连接到另一台机器。当我关闭它时,代码照常运行。
发生这种情况可能是因为某些软件可能正在控制您的剪贴板。只需关闭您不需要的任何东西,例如 VNC 或虚拟机。
如果不选择工作表,您的 LINK 愿望将无法完成。但是你可以让它做这件事的事实是肉眼看不见的。
Option Explicit
Sub test()
Application.ScreenUpdating = False
Sheets("Sheet1").Range("A1:D1").Copy
With Sheets("Sheet2")
.Activate
.Range("A1").Select
ActiveSheet.Paste Link:=True
End With
Sheets("Sheet1").Activate
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
您可以使用Application.ScreenUpdating = False
,然后在粘贴完成后将其返回为 true。
例子:
Application.ScreenUpdating = False
Worksheets("Sheet1").Range("D1").Copy
Worksheets("Sheet2").Activate
Range("Range You Want To Paste").Select
ActiveSheet.PasteSpecial Link:=True
Worksheets("Sheet1").Activate
Range("A Range You Want Active").Activate
Application.ScreenUpdating =true