【发布时间】:2015-05-19 09:22:08
【问题描述】:
我的超链接有问题。
我有一些代码非常适合它的用途。但是,它还做了一些我不想要的事情,对我来说它为什么会发生毫无意义。
我的代码如下:
Dim hLink As Hyperlink
Dim cColumn As Range
Dim Path1 As String
Dim Path2 As String
Dim pathEnd As Integer
Set cColumn = Columns(int4)
str3 = ColumnLetter(ActiveCell.Column)
For Each hLink In cColumn.Hyperlinks
pathEnd = InStr(hLink.SubAddress, "!")
Path1 = Left(hLink.SubAddress, pathEnd)
pathEnd = Len(hLink.SubAddress) - InStr(hLink.SubAddress, ColLetter)
Path2 = Right(hLink.SubAddress, pathEnd)
hLink.SubAddress = Path1 & str3 & Path2
Next hLink
int1 查找前一个子例程中的列号。 ColumnLetter 查找新列的列字母。
这是完整代码的作用(其中一些未包括在此处)。
我有一个“模板”列,它被复制到一个新列中。信息在新列中更新,然后在程序结束时运行此超链接子例程。
效果很好,但是将超链接地址中的模板列的字母替换为新列。
但是一旦运行,模板列中的超链接也发生了变化。
在超链接子例程运行之前,我已经停止了代码,并且超链接符合预期并且没有更改 - 即两个列都与模板列中的链接匹配。因此我相信这是问题代码(这是有道理的)。
我尝试了多次选择新列的迭代,但无济于事,它总是改变两列中的超链接。
我什至使用 F8 手动运行代码,检查似乎正在更新的每个超链接的列号和行号,它甚至没有更改为模板列!
我很茫然。请帮忙。
【问题讨论】:
-
黑暗中的一枪:将
Set cColumn = Columns(int4)更改为Set cColumn = Sheets("Sheet1").Columns(int4)将Sheets("Sheet1")更改为相关工作表。同样避免使用ActiveCell.Column使用像Sheets("Sheet1").Columns(1)这样的对象 -
不,那没用。请注意,模板列与新列位于同一工作表中。