【问题标题】:Paste link in vba在 vba 中粘贴链接
【发布时间】:2022-01-03 03:05:46
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这将起作用:

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

    【讨论】:

      【解决方案2】:

      我猜这就是你正在尝试的?

      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
      

      【讨论】:

        【解决方案3】:

        此代码将与您的代码 sn-p 执行相同的操作,而无需更改活动工作表。

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

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

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

        【讨论】:

          【解决方案4】:

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

          这可能是因为某些软件可能会控制您的剪贴板。只需关闭您不需要的任何东西,例如 VNC 或虚拟机。

          【讨论】:

            【解决方案5】:

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

            【讨论】:

            • 绝对没有理由先选择工作表,只需使用Sheet2.pasteSheets("Sheet2").paste。在使用之前不要选择工作表或范围,只需引用它并使用它。
            • @redOctober13 在评论某人的回答之前请先调查一下
            【解决方案6】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2023-03-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-08-05
              • 1970-01-01
              相关资源
              最近更新 更多