【问题标题】:Adding hyperlinks to one column将超链接添加到一列
【发布时间】:2019-12-12 13:17:37
【问题描述】:

我正在尝试在第一列中创建超链接,条件是单元格中的值以“W”开头。

在我将脚本从 Sheet 对象移动到 ThisWorkbook 之前,它似乎有效。

从那时起,当我尝试从另一个工作表复制一些单元格并将它们粘贴到活动工作表时,我复制的所有内容都被粘贴为超链接,无论它是什么列或值。更重要的是,如果我尝试在第一个单元格链接的行中键入任何内容,则默认键入模式为超链接样式。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim KeyCells2 As Range
Set KeyCells2 = Range("A:A")

If Not Application.Intersect(KeyCells2, Range(Target.Address)) _
       Is Nothing Then
    On Error Resume Next
    If Target.Count = 1 Then 'this one was meant to be a fix but it didn't change a thing
        If Left(Target.Value, 1) = "W" Then
            link = "http://<mylink>" & Target.Value
            ActiveSheet.Hyperlinks.Add Target, link
        End If
    End If
End If
End Sub

【问题讨论】:

  • Range(Target.Address) ?它没有资格。 Target(这是)不会吗?
  • 另外,KeyCells2 = Range("A:A") 不合格。
  • @CLR '不合格'是什么意思?那么如何选择A列中的每个单元格呢?
  • 不合格:您已经告诉它使用 Range ("A:A"),但您希望 Excel 能够“猜测”哪个 sheet,哪个 workbook 等等,当你没有具体说明时。

标签: excel vba hyperlink


【解决方案1】:

试试这个,我想它会满足你的需要:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim KeyCells2 As Range
    Dim targetcell As Range
    Set KeyCells2 = Application.Intersect(Sh.Range("A:A"), Target, Sh.UsedRange)
    If Not KeyCells2 Is Nothing Then
        For Each targetcell In KeyCells2
            If Left(targetcell.Value, 1) = "W" Then
                link = "http://my.link." & targetcell.Value
                Sh.Hyperlinks.Add Anchor:=targetcell, Address:=link
            End If
        Next
    End If
End Sub

【讨论】:

  • 使用您的函数时,复制工作表时所有内容都已正确粘贴,但随后整个应用程序崩溃...
  • 我已将代码更改为仅在 A:A、UsedRange 和粘贴的输出的交点上运行。这应该意味着代码只能在尽可能小的单元格上运行。
猜你喜欢
  • 1970-01-01
  • 2020-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多