В этом блоке кода я пытаюсь заменить текст в ячейке таблицы формулой, в которой значение ячейки добавлено в конец строки, а затем сделать ее гиперссылкой с использованием общего пути URL. Тем не менее, когда я запускаю этот код, я получаю сообщение «Ошибка приложения или объекта» в строке «.DataBodyRange.Formula = concat». После того, как это будет решено, я хотел бы создать кнопку, которая выполняет этот код для всех ячеек в .DataBodyRange (как быстрое обновление для новых текстовых записей).
РЕДАКТИРОВАТЬ 1: @ ответ jamheadart исправил это ( РЕДАКТИРОВАТЬ 2: , хотя я только что понял, что закрывающие скобки были немного отключены (включая вторую переменную, когда она должна содержать только первый - URL) - код, отредактированный ниже.
Следующая часть вопроса:
С исправленной семантикой; Как бы я изменить код в рамках ниже подпрограммы, чтобы перебрать все ячейки в .DataBodyRange? В настоящее время он устанавливает все ячейки в DataBodyRange равными содержимому ячейки E2, но мне нужно использовать уникальное значение в каждой ячейке для создания гиперссылки. РЕДАКТИРОВАТЬ 2: решил это самостоятельно - полный код ниже. Я изменил формат таблицы так, что мне требуется только один отредактированный столбец. В настоящее время это не учитывает случай, когда при повторном запуске кода полный URL добавляется в конец строки значения URL, но исправляется с помощью простого оператора if (если v не содержит «HTTP», создайте строку concat и установите .Cell значение для согласования).
Спасибо за вашу помощь!
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
Снимок экрана конечного продукта:) (мне не хватает представителя для публикации изображения)