Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 具有使用单元格值的动态文件地址的超链接_Vba_Excel_Hyperlink - Fatal编程技术网

Vba 具有使用单元格值的动态文件地址的超链接

Vba 具有使用单元格值的动态文件地址的超链接,vba,excel,hyperlink,Vba,Excel,Hyperlink,我在谷歌上搜索了一段时间,但找不到合适的解决方案 我想有一个超链接,它从某个单元格中检索它的部分地址。也就是说,插入超链接时,我希望它引用单元格值而不是绝对值字符串,这样超链接就可以轻松更改 以下是所作的分述: Sub CreateHyper(ARow As Integer, AColumn As Integer, ASheet As Integer, TargetAdress As String, HName As String) Sheets(1).Hyperlinks.Add A

我在谷歌上搜索了一段时间,但找不到合适的解决方案

我想有一个超链接,它从某个单元格中检索它的部分地址。也就是说,插入超链接时,我希望它引用单元格值而不是绝对值字符串,这样超链接就可以轻松更改

以下是所作的分述:

Sub CreateHyper(ARow As Integer, AColumn As Integer, ASheet As Integer, TargetAdress As String,      HName As String)
Sheets(1).Hyperlinks.Add Anchor:=Sheets(ASheet).Cells(ARow, AColumn), _
Address:="'" & Sheets("DATA").Range("A2").Value & "'" & TargetAdress, TextToDisplay:=HName
End Sub
A2中的单元格值取决于excel的存储位置,可以是C:\或X:\许多文件夹\\

TargetAddress不是指向单元格,而是指向驱动器上的文件\File.pdf

我认为所有其他变量都是自我解释的

因此,当A2更新时,所有超链接也应该更新

下面的工作正常,但如果A2发生更改,目标将不会更改,因为它将是静态的,如何使SheetsDATA.RangeA2.value成为参考

Sub CreateHyper(ARow As Integer, AColumn As Integer, ASheet As Integer, TargetAdress As String,      HName As String)
Sheets(1).Hyperlinks.Add Anchor:=Sheets(ASheet).Cells(ARow, AColumn), _
Address:=Sheets("DATA").Range("A2").Value & TargetAdress, TextToDisplay:=HName
End Sub

有什么建议吗?

AFAIK,创建带有超链接的超链接。添加将永远不会是动态的,因为地址将是创建链接时该单元格的内容。如果该单元格发生更改,链接将不会更新。您需要重复运行该子节点,以便将新单元格内容用作链接

<>而不是将超链接放置到一个单元格中,考虑使用超链接工作表函数,它从一个单元格动态地链接地址。
Sub CreateHyper(ARow As Integer, AColumn As Integer, ASheet As Integer, TargetAddress As String, HName As String)
Dim TargetCell As Range
Set TargetCell = ThisWorkbook.Sheets(ASheet).Cells(ARow, AColumn)
TargetCell.Formula = "=hyperlink('Data'!A2&""" & TargetAddress & """,""" & HName & """)"
End Sub

注意,我在变量名中使用了正确的地址拼写。您的原始代码拼写不正确,这可能导致调试时出现混乱

那么,您尝试过的东西有什么不起作用呢?通常情况下,targetAddress包含整个路径,因此可以工作,但现在我希望地址中有一个单元格引用,这是我无法管理的引用位。A2 includes=c:\folder1\Hyperlink将是:c:\folder1\folder2\file.pdf,如果我将A2更新为:c:\folder3\Hyperlink现在将如何更新为c:\folder3\folder2\file.pdf如果删除“位”,它将工作,但如果A2更改,它将是静态的,并且不会更改目标地址。