使用VBA为范围内的每个单元格Excel自定义超链接

use*_*099 2 excel vba excel-vba

我有一个模块,从整个工作表中删除所有公式,然后,它应该使用单元格值在每个单元格上创建一个超链接公式.

Sub Test()
Dim ws1 As Worksheet
Set ws1 = ThisWorkbook.Worksheets("Test")

ws1.Range("B33:F533").Value = ws1.Range("B33:F533").Value


For Each i In ws1.Range("B33:B533")

i.Formula = "=HYPERLINK(""https://somelocation/" & i.Value & """,""" & i.Value & """)"

Next


End Sub
Run Code Online (Sandbox Code Playgroud)

编辑:它现在正在完美运作.谢谢你的帮助!

rot*_*ers 5

i.Formula = "=HYPERLINK('https://somelocation/"&i.Value&","& i.Value"')"
Run Code Online (Sandbox Code Playgroud)

公式中有错误.在i.Value"')你缺少&,i.Value & "'.下面添加了正确的"编译":

i.Formula = "=HYPERLINK('https://somelocation/" & i.Value & "," & i.Value & "')"
Run Code Online (Sandbox Code Playgroud)

另外值得注意的是,不要编写"&i.Value&"并让VBA IDE添加空格,最好自己动手,例如:" & i.Value & ".

你的代码有2个缺陷,你应该添加最后一个&来获得语法正确的公式,并在"和之间添加空格&,否则VBA将看不到它是正确的.

编辑; 第三个缺陷:

创建公式的行也是错误的.让我们分解一下: "=HYPERLINK('https://somelocation/" & i.Value & "," & i.Value & "')"

公式中的参数是: 'https://somelocation/" & i.Value & "," & i.Value & "'所以此行的输出示例可以是'https://somelocation/1,1'.起初,我以为你正在用逗号写一个URL,好吧..?但后来我HYPERLINK在Excel中查看了该函数,它需要两个参数.您只提供一个参数.Excel公式还期望双引号而不是单引号.你可以像这样逃避VBA中的双引号"".

正确的行应该是:

i.Cells(1, 1).Formula = "=HYPERLINK(""https://somelocation/" & i.Value & """,""" & i.Value & """)"