VBA函数结果types不匹配

我试图从Niels Bosma的名为SeoTools的加载macros中运行一个自定义Excel函数XpathOnUrl作为macros。 该函数运行良好,似乎我能够将其结果存储在一个variables。 这个variables然后可以正确地输出到一个Excel单元格,但是当我尝试在macros的下一部分中查找一个string时,我得到错误Run-time error '13': Type mismatch 。 从我从这里理解,函数返回一个数组,但是当我试图访问它作为数组的第一项,我得到同样的错误。 我试图将该variables转换成一个string与CStr ,但没有运气那里。 我错过了什么?

这是代码中有问题的部分:

 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 

只要说清楚:问题只是以条件语句开始。 如果我将variables的值直接赋值给Sheet1.Range("B1").Value = contactPage ,它会输出正确的结果。

这是一个简单的解决方法:

使XpathURL吐出它的返回范围。 然后,使用Range.value将返回值分配给联系页面,并使用.Clearcontents属性清除范围。 我认为Application.Run不让XpathURL返回到联系页面。

编辑:添加下面的评论:

  Sheet1.Range("B1").Value = Application.Run("XPathOnUrl", WebSite, "//a[contains(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),""contact"")]", "href") contactPage = Sheet1.Range("B1").Value 

你有没有尝试公式和FormulaR1C1function? 只是我的假设。

试着让我们知道是否有帮助。

 Sheet1.Range("B1").Formula = WebSite & contactPage 

要么

 Sheet1.Range("B1").FormulaR1C1 = WebSite & contactPage 

MsgBox TypeName(contactPage)显示什么?

另外,我build议使用Set with WebSite

 Dim WebSite As Range ... Set WebSite = Sheet1.Range("A1")