Я пытаюсь запустить как макрос пользовательскую функцию Excel XpathOnUrl
из надстройки под названием SeoTools от Niels Bosma. Функция работает нормально, и кажется, что я могу сохранить ее результат в переменной. Затем эту переменную можно корректно выводить в ячейку Excel, но когда я пытаюсь найти в ней строку в следующей части макроса, я получаю ошибку Run-time error '13': Type mismatch
. Из того, что я понимаю из here, функция возвращает массив, но когда я пытаюсь получить к нему доступ в качестве первого элемента массива, я получаю ту же ошибку. Я попытался преобразовать переменную в строку с CStr
, но там не повезло. Что мне не хватает?Функция результата функции функции VBA
Вот проблематичная часть кода:
WebSite = Sheet1.Range("A1")
contactPage = Application.Run("XPathOnUrl", WebSite, "//a[contains(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),""contact"")]", "href")
MsgBox TypeName(contactPage) 'trying to find out the data type results in 'Error'
If Left(contactPage(0), 4) = "http" Then
Sheet1.Range("B1").Value = contactPage
ElseIf InStr(contactPage, "/") = 1 Then
Sheet1.Range("B1").Value = WebSite & contactPage
End If
Просто, чтобы понять: проблема возникает только с условными операторами. Если я присваиваю значение переменной непосредственно ячейке, такой как Sheet1.Range("B1").Value = contactPage
, она выдает правильный результат.
Что 'contactPage' выглядеть, когда вы его просмотра в окне' Locals'? Он отображается как массив, который заполняется и индексируется? –
У вас есть опечатка в вашей первой строке. change 'WebSite = Sheet1.Range (" A1) "' to 'WebSite = Sheet1.Range (" A1 ")' –
Прежде всего, спасибо, что помогли мне открыть окно «Locals». Похож на очень полезный инструмент. И на ваш вопрос 'contactPage' появляется как Type: variant/error и Value: error 2015 – Inverbis