EXCEL超链接批量设置VBA代码

我需要sheet1里面的L列超链接能跳转到sheet2里面的E列,比如我我点击L2里面的“产品图片1”能直接跳到sheet2 E2单元格.

第1个回答  2018-05-11

答:

Sub AddHyperlinks()
    Dim i As Long
    With Sheets("Sheet1")
        For i = 2 To .Cells(Rows.Count, "L").End(xlUp).Row
            .Hyperlinks.Add anchor:=.Cells(i, "L"), Address:="", _
            SubAddress:="Sheet2!E" & i, TextToDisplay:=.Cells(i, "L").Value
        Next i
    End With
End Sub

追问

运行错误 9 下标越界 怎么解决

追答

确保工作表名字是否与代码中一致,Sheet1和Sheet2。

本回答被网友采纳
第2个回答  2018-05-11
L2公式 =HYPERLINK("#sheet2!E2","链接文字")追问

这个试过了,操作起来还是很慢,遇到几百上千单元格都要超链接太慢了

追答

按F11键,打开代码编辑器,添加以下代码

自动适应L列有文字的单元格,单击后就会跳对应工作表对应行

参数自己对应修改吧

代码考虑基于空白单元格不添加链接,有文字单元格才添加链接的,如有需求空白单元格添加,请说明,另修改


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'秋色烽火原创代码,转载请保留声明,谢谢。 2018-05-11
    Dim adr, checkColName As String
    Dim link, tableName, ColName As String
    
    tableName = "sheet2" '工作表名
    ColName = "E" '待跳转列标
    checkColName = "L" '匹配列标
    adr = Target.Address
    
    link = "#'" & tableName & "'!" & ColName & Mid(adr, InStr(2, adr, "$") + 1)
    
    '如果单元是L列,且单元格不为空,且选择的不是区域仅是单元格
    If Target.Text <> "" And InStr(adr, ":") = 0 And Mid(adr, 2, InStr(2, adr, "$") - 2) = checkColName Then
        If Target.Hyperlinks.count <> 0 Then Exit Sub
        ActiveSheet.Hyperlinks.Add Anchor:=Range(adr), Address:=link, TextToDisplay:=Target.Text '维持文字不变,添加链接,对应行标,跳对应工作表
        Selection.Hyperlinks(1).Follow '直接激活链接
    End If
End Sub

本回答被提问者采纳
第3个回答  2018-05-11
在事件里,用for循环加goto就可以了追问

有详细的流程吗?

追答

手头没电脑,写不了,很简单的,搜索一下就会了

相似回答