EXCEL VBA中的Hyperlinks函数使用

最近某个工作任务需要倒腾各种Excel表格,于是重新拾起了VBA。今天遇到的任务是做一个统计表,统计合并若干个分散的Excel表格,并在统计表中做一个具有超链接功能的目录,点击超链接可以跳转到各个分散的Excel表格中。

这个功能应当由Hyperlinks函数完成,但是实际操作起来发现这个函数里面有好多坑,使用起来并不方便,函数的官方API是这样的:

Expression.Hyperlinks.Add(Anchor, Address, [SubAddress], [ScreenTip], _ [TextToDisplay])

Expression可以是超链接所在的WorkSheet,函数有两个参数是必须的,Anchor是超链接所在的详细区域位置, Address是超链接所要跳转的目标地址。

坑1:跳转目标不是网址,而是其他表格怎么办?

如果想跳转到某个网址,直接在Address中写上网址字符串即可,如下图所示:

With Worksheets(1) 
 .Hyperlinks.Add Anchor:=.Range("a5"), _ 
 Address:="https://example.microsoft.com",
End With

但是如果想跳转到表格,一般情况下,不使用Address,而是将Address置为空,将目标表格地址放到SubAddress中,示例代码如图所示:

        ThisWorkbook.Sheets("汇总").Hyperlinks.Add Anchor:=ThisWorkbook.Sheets("汇总").Cells(i, 3), _
            Address:="", _
            SubAddress:="Sheet2!A1"

注意SubAddress的值必须是"Sheet2!A1"才行,因为根据官方API,这个属性值是字符串表达式,于是第2个坑就来了。

坑2:跳转目标是表格,但是表格的位置不是常量而是变量怎么办?

这个问题百度了很久,网上各路大神也莫衷一是,最后我经过反复尝试,找到了一种解决方案,代码如下:

        ThisWorkbook.Sheets("汇总").Hyperlinks.Add Anchor:=ThisWorkbook.Sheets("汇总").Cells(i, 3), _
            Address:="", _
            SubAddress:="'" & Variant1 & "'!C" & Variant2

如果跳转的目标位置的Sheet是一个变量,那么将Sheet的名字写到Variant1中即可,如果目标表格的行号是一个变量,那么将行号写到Variant2即可。上图中的代码,点击汇总表的第i行第3列,将会跳转到名称为Variant1的Sheet的第Variant2行,第C列中。

具体原因我也不清楚,但是这样解决问题对我来说就够了。如果各位能知其所以然,欢迎在下方给我留言^_^。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值