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")