Создать гиперссылку из содержимого ячейки в Excel VBA
Я пытаюсь создать гиперссылки на основе содержимого ячеек в выбранном пользователем диапазоне ячеек. Тем не менее, я получил это далеко, когда он запускает цикл по циклу, но не создает никаких гиперссылок.
Sub AcctHyperlink()
Dim WorkRng As Range
On Error Resume Next
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", "Select Range", WorkRng.Address, Type:=8)
For i = WorkRng.Rows.Count To 1 Step -1
If WorkRng.Cells(i, 1).Value <> "" Then
WorkRng.Cells(i, 1).Hyperlink.Add Anchor:=WorkRng.Cells(i, 1), _
Adress:="https://example.com/" & WorkRng.Cells(i, 1).Value & "/search", _
TextToDisplay:=WorkRng.Cells(i, 1).Value
End If
Next
End Sub
2 ответа
Решение
Отредактировано не более двух опечаток и пропущено CStr()
звонки! Hyperlink
должно быть Hyperlinks
, а также Adress
должно быть Address
, Код у вас хорошо компилируется, потому что Range.Item
возвращает Variant
не Range
, поэтому Excel не может пометить такие ошибки во время компиляции. На моей установке Excel 2013 работает следующее:
Option Explicit '<--- always use this for more robust code
Sub AcctHyperlink()
Dim WorkRng As Range
'On Error Resume Next '<--- Omit for error checking
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", "Select Range", WorkRng.Address, Type:=8)
Dim i as Long '<--- Need this because of Option Explicit
Dim addr as String '<--- ditto
For i = WorkRng.Rows.Count To 1 Step -1
If WorkRng.Cells(i, 1).Value <> "" Then
addr = "https://insight.metavante.org/opstopb1/OpstopServlet/Search?activityID=ViewProfileLnNote&activityType=note&activityTrgtID=undefined&activityAction=search&profileView=&accountNumber=" & CStr(WorkRng.Cells(i, 1).Value) & "&accountType=&subAccountNumber=&prcsGrpID=136&RelatedFIs=136&searchBy=account"
' Note: need CStr()
' V--- "Hyperlinks"
WorkRng.Cells(i, 1).Hyperlinks.Add Anchor:=WorkRng.Cells(i, 1), _
Address:=addr, _
TextToDisplay:=CStr(WorkRng.Cells(i, 1).Value)
'^--- "Address" two lines up
' ^^^^---- Need CStr()
End If
Next
End Sub
Вы должны быть изменены:
Adress
от Address
а также Hyperlink
от Hyperlinks