You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA代码求助:匹配“92/65/EEC”添加跨表超链接失败排查

修复你的VBA超链接添加代码

我帮你排查了代码里的问题,主要有几个关键错误导致运行异常,下面一步步说明并给出修正后的版本:

问题分析

  • 错误嵌套With cell.Validation:添加超链接和数据验证(Validation)完全无关,这个With块不仅多余,还会因为单元格没有预设验证规则而触发运行错误。
  • Anchor参数指向错误:你用了Anchor:=Selection,但循环逻辑里应该针对当前遍历的cell对象,而不是代码运行时选中的单元格——毕竟选中的单元格大概率不是当前循环到的J列目标单元格。
  • 工作表名称的空格问题:原代码里的SubAddress写的是'List of EU legislation '!A8,末尾多了一个空格,如果你的Sheet2实际名称是List of EU legislation(无末尾空格),这个超链接会找不到目标位置。

修正后的代码

Sub Legislation()
    ' Define variables
    Dim lrow As Long, rng As Range, cell As Range
    
    ' Get the last used row in column J
    lrow = Cells(Cells.Rows.Count, "J").End(xlUp).Row
    
    ' Set the target range (J5 to last row)
    Set rng = Range("J5:J" & lrow)
    
    ' Loop through each cell in the range
    For Each cell In rng
        ' Check if cell contains "92/65/EEC" (case-insensitive)
        If InStr(1, cell.Value, "92/65/EEC", vbTextCompare) > 0 Then
            ' Add hyperlink directly to the cell
            ActiveSheet.Hyperlinks.Add _
                Anchor:=cell, _
                Address:="", _
                SubAddress:="'List of EU legislation'!A8", _
                TextToDisplay:="92/65/EEC"
        End If
    Next cell
End Sub

关键修改点说明

  • 移除了多余的With cell.Validation块,直接调用Hyperlinks.Add方法完成超链接添加。
  • 将Anchor:=Selection改为Anchor:=cell,确保超链接精准添加到当前循环的目标单元格。
  • 修正了SubAddress里工作表名称的末尾空格(如果你的Sheet2名称确实包含末尾空格,可重新加回去)。
  • 补充了注释,让代码逻辑更清晰。

另外,如果你希望只在单元格完全匹配“92/65/EEC”时才添加超链接,而不是包含该文本,可以把判断条件改成:

If UCase(cell.Value) = UCase("92/65/EEC") Then

内容的提问来源于stack exchange,提问作者Cathy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:01:15