我收集了单个零件不同版本的所有不同零件编号,每个零件编号都以 pdf 格式超链接到其特定的不同图纸。我想将它们放入数据验证列表中,以便人们可以选择他们想要的版本,但是当选择单元格时,超链接不会“跟随”单元格(只跟随纯文本)。如何让超链接延续到列表中的每个不同项目?
我制作了一个小表格,其中包含每个部件编号和相应的文件服务器位置链接(纯文本格式)。然后,我可以有一个下拉列表来选择任何部件,第二个单元格使用该选择从表格中生成正确的超链接。问题是这个解决方案需要 2 个不同的单元格,而我只有一个空间。有没有办法让我的下拉列表也更改单元格内的超链接?
答案1
我尝试过类似你正在做的事情。遗憾的是,没有 Excel 公式可以返回单元格的嵌入 URL。检索它的唯一方法是通过 VBA。
- 您必须创建一个事件来捕获特定范围内的单元格变化。该范围应涵盖您的数据验证单元格。
这是一个帮助您开始捕获单元格变化情况的示例:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:C10")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
' Place your code here.
MsgBox "Cell " & Target.Address & " has changed."
End If
End Sub
当然,请将此处显示的范围调整为您自己的范围。
确保将此代码放在“ThisWorkbook”内:
- 在该事件中收集它是哪个单元格以及它连接到哪个单元格作为超链接
- 使用 VBA 使用类似这样的函数告诉您该单元格中哪个超链接:
样本:
Option Explicit
Function HyperLinkText(rg As Range)
Dim sFormula As String, S As String
Dim L As Long
Dim H As Hyperlink, HS As Hyperlinks
sFormula = rg.Formula
L = InStr(1, sFormula, "HYPERLINK(""", vbBinaryCompare)
If L > 0 Then
S = Mid(sFormula, L + 11)
S = Left(S, InStr(S, """") - 1)
Else
Set HS = rg.Worksheet.Hyperlinks
For Each H In HS
If H.Range = rg Then
S = H.Address
End If
Next H
End If
HyperLinkText = S
End Function
我不知道您对 VBA 有多熟悉。如果您需要有关第一部分的更多帮助,请告诉我。