VBA: добавить гиперссылку с введенной переменной в выбранную ячейку - PullRequest
0 голосов
/ 03 августа 2020

Я хочу добавить гиперссылку с местом назначения ячейки в выбранную ячейку. Например, сначала выберите диапазон («H3»), затем появилось окно чата ввода, я ввожу «2», программа VBA вставит гиперссылку, которая ссылается на ячейку «H2» на ячейку «H3» . Я пробовал код следующим образом:

Sub test1()
Dim myValue As Variant
myValue = InputBox("Input the cell that you want to link to!", "Please input", H2)
ActiveSheet.Range.Hyperlinks.Add Anchor:=Selection, Address:=Sheets("Selected_Formated").Range("F" & myValue.Value)
End Sub

или

Sub test2()
Dim myValue As Variant
myValue = InputBox("Input the cell that you want to link to!", "Please input", H2)
ActiveSheet.Range.Hyperlinks.Add Anchor:=Range("H3"), SubAddress:="Selected_Formated!" & myValue.Value & ""
End Sub

Однако оба кода сообщали об ошибке, например «Требовать объект» .

Я хочу знать, как использовать введенную переменную в этой "Hyperlinks.Add" функции? Спасибо ~

Ответы [ 2 ]

1 голос
/ 03 августа 2020

В вашем примере H2 не был указан как строка, поэтому VBA решил, что это переменная. См. Мой пример ниже, он должен делать то, что вы хотите, но вы можете вводить только адрес, и вы можете вводить адрес между листами в текущей книге, но вы не можете ссылаться таким образом на другую книгу.

Также может записать макрос помочь вам, если вы хотите сделать что-то немного другое. Рабочий код:

Dim xTargetRange As Range:   Set xTargetRange = Selection 'here you could create function out of this or something
Dim sAnswer As String 'output needs to be string (or variant)

'dont forget to include name of sheet for between sheet referencing - when you dont include it it refers only to cells in current sheet.
sAnswer = InputBox("Input the cell that you want to link to!", "Please input", "'" & xTargetRange.Parent.Name & "'!H2") 

'macro record showed that SubAddress is used for referencing within workbook (address is propably used for using URL to reference webpages etc.).
xTargetRange.Parent.Hyperlinks.Add Anchor:=xTargetRange, Address:="", SubAddress:=sAnswer, TextToDisplay:=sAnswer 
1 голос
/ 03 августа 2020

То, что вы хотите, может быть достигнуто с помощью любого из двух типов поля ввода в VBA.

1: Application.inputbox ()

   Sub test1()

 Dim myValue As Range

    Set myValue = Application.InputBox("Input the cell that you want to link to!", Title:="Please input", Default:="H2", Type:=8)
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=myValue.Address

End Sub

2: Inputbox ()

Sub test2()

 Dim myValue As Range, i As Integer

    i = InputBox("Input the cell that you want to link to!", "Please input", 2)
    Set myValue = ActiveSheet.Cells(i, ActiveCell.Column)
    ActiveCell.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=myValue.Address

End Sub 
  1. Используйте Applcation.inputbox и установите его type = 8 для возврата диапазона.

  2. Вам необходимо использовать «Set» при назначении диапазона в myvalue.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...