Я пытаюсь написать гиперссылки на ячейки одним щелчком мыши по ленте в Excel 2007. Эти гиперссылки должны, в свою очередь, выполнять другую процедуру, которая делает материал в строке, ре. Однако стандартный метод Worksheet_FollowHyperlink()
не будет работать, так как мне нужно выполнить его через внешний xml-админ, и, насколько я понимаю, это событие запускается из гиперссылок, расположенных только на том же листе.Excel VBA plus = hyperlink()
В результате я обнаружил, что использование метода =HYPERLINK("#funName()","Click me")
работает, но существует проблема, которую я все еще испытываю.
Ниже приводится урезана версия моего уже работающий код:
Sub InsertLink() ' This is run directly by the callback for an IRibbonControl button click
With Sheet1
lastrow = Range("A" & Rows.count).End(xlUp).Row
While i <= lastrow
Range("E" & i).Value = "=HYPERLINK(""#consolidateDuplicate(A" & i & ",C" & i & ")"",""Copy this row to next"")"
Wend
Call MsgBox ("Finished inserting hyperlinks on each row.", vbOKOnly)
End With
End Sub
Sub consolidateDuplicate(PN, Quantity)
Dim thisRow, prevQuant As Long
thisRow = Selection.Row
MsgBox("You clicked the hyperlink for " & thisRow & "Q: " & Quantity & ", PN: " & PN)
End Sub
Нажатие кнопки ленты успешно записывает все гиперссылки в соответствующие строки, как и ожидалось. Однако, когда я пытаюсь щелкнуть любую из этих гиперссылок, таким образом, выполняя consolidateDuplicate()
в том же модуле надстройки, я сразу же получаю сообщение «», которое недействительно », а затем сообщение MsgBox
.
Я попытался удалить весь код из рутины безрезультатно. Я также попробовал стандартный метод обхода грубой силы с добавлением On Error Resume Next ... On Error Goto 0
, а также Application.DisplayAlerts = False ... Application.DisplayAlerts = True
. Ничего не помогает. Я все еще получаю предупреждение.
Так что, хотя мой сценарий отлично работает и делает то, что я хочу, в конце концов, я чувствую, что должен быть способ подавить предупреждение или исправить все, что вызывает его, что у меня есть чувство, например Worksheet_FollowHyperlink()
, состоит в том, чтобы хранить подпрограмму в объеме модуля надстройки (требуется для моего приложения), а не содержать его полностью в самой вызывающей книге/листе.
Любые идеи?
Отлично! Первоначально у меня было это там, но по какой-то причине я видел ту же ошибку. Возможно, это была опечатка, которая может объяснить, почему я удалил ее во время тестирования. – depwl9992