У меня нет абсолютно никакой идеи, почему я не могу добавить гиперссылку в форму, но только если ее активирует функция в ячейке. Когда я запускаю его вручную из непосредственного окна, все работает хорошо. Также у меня нет никаких проблем с выполнением этого вручную.excel vba добавить гиперссылку на форму в группе
У меня тоже не знаю, как написать хорошую обработку ошибок в VBA
Это пример кода.
function testCase(xlLabelName as String)
Dim sht As Worksheet
For Each sht In ActiveWorkbook.Sheets
If shapeExist(sht, xlLabelName) Then
sht.Hyperlinks.Add Anchor:=sht.Shapes(xlLabelName), Address:="", SubAddress:="a1"
testCase = "Bingo"
End If
Next sht
End Function
От немедленного окна я получаю Bingo
ответ и в клетке я получаю #arg!
ошибку, и это единственная линия, которая не выполняется. Я пытался разгруппировать формы сначала с помощью
Dim gshp As Shape
Dim shrng As ShapeRange
Dim tmp As String
Set gshp = sht.Shapes(getParentShape(xlLabelName))
tmp = gshp.Name
Set shrng = gshp.Ungroup
sht.Hyperlinks.Add Anchor:=sht.Shapes(xlLabelName), Address:="", SubAddress:="a1"
shrng.Regroup
shrng.name = tmp
Но это также не удалось. И все же немедленное окно дает мне правильный ответ (bingo
) Все остальные операции выполняются по мере необходимости (покраска), только этот провал. Если я удалю эту проблемную строку, я получил правильный ответ в ячейке. Формы Я пытаюсь разобраться, это msoFreeform
Функция, чтобы проверить, если форма существует, только цикл через все формы в листе и сравнить имена (Lame но сейчас его работу)
Спасибо заранее.
UDF не может добавить гиперссылка - по крайней мере, без запутанных обходных. Почему вы хотите сделать это с помощью функции, а не на событие? – Rory
Ты мой личный Иисус Христос. Теперь я знаю, что искать. – KamilKrzes