#vba #hyperlink #lookup #offset
Вопрос:
У меня есть немного кода, который выглядит так :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim searchFolder As String, fileName As String
Static PowerPointApp As Object
If Target.Column = 3 Then
If Target.CountLarge > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
With Application
Msg = .IfError(.VLookup(Target.Text, Worksheets("Test").Columns("A:B"), 2, 0), "")
If Msg <> "" Then MsgBox Target.Value amp; vbLf amp; vbLf amp; Msg, vbInformation, "Suggestion d'inspection"
End With
End If
End Sub
Что он делает, так это проверяет содержимое ячейки из столбца A на листе 1 по списку из листа 2, столбец 1 ; если есть совпадение, то Msgbox выдаст информацию из значения смещения результирующей ячейки из столбца 2.
Я пытаюсь адаптировать это в другую функцию, которая выполняла бы ту же проверку, но тогда вместо отображения сообщения из ячейки смещения она открывала бы гиперссылку из той же ячейки.
В качестве примера : я помещаю «Информацию X» в Лист 1: 1 ; он проверяет, соответствует ли Лист 2, и есть ли совпадение (т. Е. в A45) откроется ссылка из B45.
Как я мог бы адаптировать свой код в соответствии с этими требованиями ?
РЕДАКТИРОВАТЬ : Я относительный новичок в VBA, мне может понадобиться время, чтобы понять некоторые концепции ^^’
Ответ №1:
Сначала проверьте, не равно ли возвращаемое значение из vlookup «». Если нет, то передайте это значение в первый аргумент ActiveWorkbook.FollowHyperlink
.
Изменить: Удалите две строки о msg
и замените их:
hlink = .VLookup(Target.Text, Worksheets("Test").Columns("A:B"), 2, 0)
If hlink <> "" Then
ActiveWorkbook.FollowHyperlink (hlink)
End If
Возможно, вам потребуется объявить hlink как строковую переменную.
Комментарии:
1. Как я только что отредактировал в своем первоначальном посте, я совсем новичок в VBA. Много проб и ошибок… Это означает, что, как бы то ни было, я не уверен, как перевести ваше предложение в код.
2. Большое спасибо, сейчас это работает как заклинание =) Все еще учусь, но я верю, что теперь я в этом разбираюсь…
3. Рад это слышать! Пожалуйста, подумайте о том, чтобы отметить это как правильный ответ.
4. Готово =) Я быстро поддержал ваш комментарий вчера вечером, но забыл чек ^^’