VBA函数结果类型不匹配

时间:2015-02-19 12:40:12

标签: excel vba excel-vba

我正在尝试以Niels Bosma的名为SeoTools的加载项作为宏运行自定义Excel函数XpathOnUrl。该函数运行正常,似乎我能够将其结果存储在变量中。然后可以将此变量正确输出到Excel单元格,但是当我尝试在宏的下一部分中查找其中的字符串时,我收到错误Run-time error '13': Type mismatch。根据我从here的理解,该函数返回一个数组,但当我尝试将其作为数组的第一项访问时,我得到了同样的错误。我试图将变量转换为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

只是说清楚:问题仅从条件语句开始。如果我将变量的值直接分配给像Sheet1.Range("B1").Value = contactPage这样的单元格,它会输出正确的结果。

3 个答案:

答案 0 :(得分:2)

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

XpathURL吐出它返回的范围。然后,使用Range.value将返回值分配给contactpage,并使用.Clearcontents属性清除范围。我认为Application.Run不允许XpathURL返回contactpage

编辑:添加以下评论:

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

答案 1 :(得分:0)

您是否尝试过Formula和FormulaR1C1功能?只是我的假设。

尝试告诉我们是否有帮助。

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

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

MsgBox TypeName(contactPage)显示什么?

答案 2 :(得分:0)

此外,我建议将SetWebSite

一起使用
Dim WebSite As Range
...
Set WebSite = Sheet1.Range("A1")