【问题标题】:Excel VBA: How to autocreate hyperlink from cell value?Excel VBA:如何从单元格值自动创建超链接?
【发布时间】:2017-03-30 06:06:33
【问题描述】:

我有一个名为 Table1 的表

在 B 栏中,我有票号。例如:76537434

要求:当 B 列中的任何单元格发生任何更改时,该单元格(目标单元格)要更改为超链接,使得超链接地址为 example.com/id=76537434

单元格值,即 76537434 必须保持不变

【问题讨论】:

  • 如果您不想使用 VBA 并且在单独的辅助列中调用简单的 Hyperlink() 函数就可以了,那么您也可以使用类似于此的解决方案:stackoverflow.com/questions/42977982/…
  • 谢谢拉尔夫,但我希望超链接在同一个单元格上

标签: vba excel hyperlink


【解决方案1】:

将此事件处理程序添加到工作表的代码模块:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 2 Then Exit Sub
    Target.Hyperlinks.Delete ' or Target.ClearHyperlinks to conserve the formatting
    Me.Hyperlinks.Add Target, "http://example.com/id=" & Target.value
End Sub

【讨论】:

  • 最简单整洁的解决方案
  • 使用 Target.ClearHyperlinks 而不是 Target.Hyperlinks.Delete
  • @Dv_MH 好建议,ClearHyperlinks 保存格式。
【解决方案2】:

下面的Worksheet_Change事件应该可以解决你的问题:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cell As Range
Dim tmp As String
If Intersect(Range("B:B"), Target) Is Nothing Then Exit Sub

For Each cell In Target
    If cell.Column = 2 Then
        Application.EnableEvents = False
        tmp = cell.Value2
        cell.Parent.Hyperlinks.Add _
            Anchor:=Cells(cell.Row, 2), _
            Address:="http://example.com/id=" & tmp, _
            TextToDisplay:=tmp
        Application.EnableEvents = True
    End If
Next cell

End Sub

请注意,您必须将其复制到工作表中,而不能复制到单独的模块中。

【讨论】:

    【解决方案3】:
    =HYPERLINK(E14&F14,"Name")
    

    其中单元格 E14 包含“http://www.example.com/id=”,单元格 F14 包含“76537434”。 此灵魂提示不需要 VBA 宏。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-07-26
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 2014-01-18
      • 2021-09-30
      相关资源
      最近更新 更多