在这个代码块中,我试图用一个公式替换表格单元格中的文本,该公式将单元格的值附加到字符串的末尾,然后使用公共URL路径将其作为超链接。但是,当我运行此代码时,我收到“.DataBodyRange.Formula = concat”行上的“应用程序定义的或对象定义的错误”。解决此问题后,我想创建一个按钮,为.DataBodyRange中的所有单元格执行此代码(作为新文本条目的快速更新)。
编辑1: @japheadart的回答解决了这个问题(编辑2:虽然我刚刚意识到关闭括号略有偏差(包括第二个变量时应该只包含第一个 - URL) - 下面编辑的代码。
问题的下一部分: 随着语义的固定;我将如何更改下面的子代码以迭代.DataBodyRange中的所有单元格?目前,它将DataBodyRange中的所有单元格设置为等于单元格E2中的内容,但我需要使用每个单元格中的唯一值来生成超链接。 编辑2:我自己解决了这个问题 - 完整代码如下。我更改了表格格式,因此我只需要编辑一列。这当前没有捕获重新运行代码将完整URL附加到URL值字符串末尾但用一个简单的if语句修复的情况(如果v不包含'HTTP',则创建concat字符串并设置一个.Cell值为concat)。
感谢您的帮助!
Sub Hyperlinkify()
'
' Hyperlinkify Macro
'
' Keyboard Shortcut: Ctrl+t
'
Dim oSh As Worksheet
Set oSh = ActiveSheet
Dim v As String
Dim concat As String
Dim url As String
url = "http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid="
Dim RNG As Range
Dim aCell As Range
Set RNG = Sheets("MTG Basic Lands").ListObjects("tbl_mtg_lands").ListColumns("Card id").DataBodyRange
For Each aCell In RNG.Cells
' if v contains 'http' (or doesnt start with a number, both work), run the following 3 lines of code:
v = aCell.Value
concat = "=HYPERLINK(""" & url & v & """, " & v & ")"
aCell.Value = concat
Next aCell
End Sub
Screenshot of the End Product :)(我没有足够的代表发布图片)
答案 0 :(得分:0)
您的HYPERLINK周围需要引号,所以行
concat = "=HYPERLINK(" & url & v & ", " & v & ")"
导致=HYPERLINK(http://...)
应该是
concat = "=HYPERLINK(""" & url & v & ", " & v & """)"
提供=HYPERLINK("http://...")
指出HYPERLINK()函数有第二个显示文本参数:
concat = "=HYPERLINK(""" & url & v & """, " & v & ")"
答案 1 :(得分:0)