在vba中粘贴链接

时间:2012-04-04 01:49:33

标签: excel-vba vba excel

我想将链接从一张纸粘贴到另一张

Range("A1:D1").Select
Range("D1").Activate
Selection.Copy
Sheets("Sheet2").Select
ActiveSheet.Paste Link:=True

但是,代码会使工作表从Sheet1切换到Sheet2。无论如何我可以粘贴链接而不切换表格吗?

感谢。

6 个答案:

答案 0 :(得分:1)

这将有效:

ThisWorkbook.Worksheets("Sheet2").Range("D1").Formula = "=Sheet1!D1"

答案 1 :(得分:1)

我想这就是你的尝试?

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

答案 2 :(得分:0)

此代码将与您的代码段完全相同,而不会更改活动工作表。

Range("A1:D1").Copy
Worksheets("Sheet2").Paste Link:=True

请注意,此(和您的代码)将从活动工作表中复制。如果要从活动工作表以外的工作表进行复制,请使用

之类的内容
Worksheets("Sheet1").Range("A1:D1").Copy
Worksheets("Sheet2").Paste Link:=True

答案 3 :(得分:0)

我刚才遇到了同样的问题。我刚刚意识到,当我试图运行我的代码时,TightVNC已连接到另一台机器。当我关闭它时,代码照常运行。

可能会发生这种情况,因为某些软件可能会控制您的剪贴板。只需关闭您不需要的任何内容,例如VNC或虚拟机。

答案 4 :(得分:0)

您可以使用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

答案 5 :(得分:-1)

如果不选择表格,您的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