Vba 单元格偏移量(0,1).Value2是否返回不可用的值?

Vba 单元格偏移量(0,1).Value2是否返回不可用的值?,vba,excel,Vba,Excel,我是VBA新手,所以请容忍我。我有一个简单的电子表格,其中有三列,分别是businessname、city和state(Cols 1、2和3),并使用它们调用WhitePages API来提取一些额外的数据 如果我硬编码的值,它的工作很好 url=”http://api.whitepages.com/find_business/1.0/?businessname=ABBOTT 实验室;城市=北芝加哥;州=伊利诺伊州;api_key=key“ 如果我使用Value2作为企业名称,它也可以正常工作

我是VBA新手,所以请容忍我。我有一个简单的电子表格,其中有三列,分别是businessname、city和state(Cols 1、2和3),并使用它们调用WhitePages API来提取一些额外的数据

如果我硬编码的值,它的工作很好

url=”http://api.whitepages.com/find_business/1.0/?businessname=ABBOTT 实验室;城市=北芝加哥;州=伊利诺伊州;api_key=key“

如果我使用
Value2
作为企业名称,它也可以正常工作

url=”http://api.whitepages.com/find_business/1.0/?businessname=“&cell.Value2&”city=NORTH CHICAGO;state=IL;api_key=key”

但是,如果我在businessname之后开始使用
Value2
,它就会完全失败

url=”http://api.whitepages.com/find_business/1.0/?businessname= “&cell.Value2&”city=“&cell.Offset(0,1)。Value2&”state=“&cell.Offset(0,2)。Value2&”api_key=key“

当我
MsgBox
所有三个值时,它们看起来都很好,所以我得到了正确的数据

XMLImport
中,基本上返回“成功”和“搜索未返回结果”

我错过了什么?我也尝试过实际更改活动单元格并以这种方式提取数据,而不是使用偏移量,但这也不起作用

是否有偏移量返回的值超出了我的使用范围


即使是一个解决办法也会很感激

您可以在以下操作之前将Value2转换为字符串:

CStr(cell.Offset(0,1).Value2)
CStr(cell.Offset(0,2).Value2)
和MsgBox这些字符串的结果,以了解返回的值是什么。

试试这个


url=”http://api.whitepages.com/find_business/1.0/?businessname= “&Trim(cell.Value)&”city=“&Trim(cell.Offset(0,1.Value)&”state=“&Trim(cell.Offset(0,2.Value)&”api_key=key“

只是一个想法..调暗一个变量并写出它。验证您是否返回了所需的值。
单元格的偏移量(0,1)
的值不是您所认为的值。前导/尾随空格还是返回?尝试添加
Debug.Print“|”和cell.Offset(0,1).Value2&“|”
并在即时窗口中检查结果谢谢-我尝试了这两种方法。我确实将一个变量设置为字符串,但它没有起作用。我希望可能是某种非字符串类型。我还添加了括号,没有显示任何无关内容-括号正好与值相对。这会让我彻夜未眠:-/谢谢。我尝试了这两种方法并添加了括号,返回的值看起来很好。。。city=“[”+CStr(cell.Offset(0,1).Value2)+“]”MsgBox city state=“[”+CStr(cell.Offset(0,2).Value2)+“]”MsgBox stateURLEncode是一种将字符串转换为另一个为url传递参数编码的字符串的方法。您应该添加此方法,并为通过URL发送的每个参数调用它。URLEncode的代码示例将在中找到。希望这有帮助