【问题标题】:Excel VBA : Hyperlink that fills target cell's contents with hyperlinked textExcel VBA:用超链接文本填充目标单元格内容的超链接
【发布时间】:2019-08-15 21:57:37
【问题描述】:

这里有很多关于 VBA 和 excel 中的超链接的类似问题,但我无法根据自己的情况进行修改。

在一张纸上我有一列名称 (E:E),在另一张纸上我有一个单元格 (D13)。

我想要做的是超链接列 (E:E) 中的每个单元格,这样,当单击时,超链接不仅会将我带到单元格 (D13),而且还会使用我单击的名称填充单元格 (D13) .

所以,点击“John Smith”(Sheet1!E1) ---> (Sheet2!D13) = “John Smith”

【问题讨论】:

    标签: excel vba hyperlink


    【解决方案1】:

    首先你需要一个标准模块中的一小段代码来安装Sheet1中的超链接:

    Sub MakeLink()
        Sheets("Sheet1").Hyperlinks.Add Anchor:=Range("E1"), Address:="", SubAddress:="Sheet2!D13", TextToDisplay:="Stuff"
    End Sub
    

    那么你需要在工作表代码区有一个事件宏来进行内容传输:

    Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
        ActiveCell.Value = Sheets("Sheet1").Range(Target.Parent.Address).Value
    End Sub
    

    【讨论】:

    • 我喜欢你的解决方案,不涉及使用.Select,实际上是请求的超链接......有点。 Anchor:=Range("E1") 也应该是合格的(即:Anchor:=Sheets("Sheet1").Range("E1")),否则如果从不同的工作表运行它不会有预期的结果。它也不会在E:E 中创建链接,而只是在E1... 我猜应该很容易在循环中纠正。
    • @Gary'sStudent 我发现了一个问题。我可以让它按预期工作,但只适用于前五到六个名字?之后它只返回 Sheet2!D13 中的第六个名称。如上所述,我已经对锚定了资格。你知道为什么会这样吗?
    【解决方案2】:

    我认为最好的解决方案可能是使用 VBA。如果您不确定如何执行此操作,请记录选择 e 中的单元格的 s 宏,然后转到 D13 并更新其值,然后查看记录的代码并使用这些 sn-ps 来创建您的代码。在较高级别上,您希望在单击 E 列中的任何单元格时触发一个宏,该宏执行如下操作:

    Dim e_value = <value of selected cell in column E> ThisWorkbook.Sheets("name of sheet 2").Range("D13") = e.value Application.Goto Reference:=Worksheets("Sheet2").Range("D13"), Scroll:=False

    请注意,上面包含伪代码,但它应该让您大致了解如何进行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 2017-07-23
      • 2021-05-12
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 2016-05-21
      相关资源
      最近更新 更多