【发布时间】:2020-04-02 13:41:21
【问题描述】:
我遇到了一个奇怪的 VBA 问题:有一个包含有效 URL 的字符串变量 strURL
CreateObject("Shell.Application").Open strURL ' does *not* work
而
CreateObject("Shell.Application").Open strURL & vbNullString ' works
虽然“工作”意味着按预期打开具有给定 URL 的浏览器。 代码驻留在 Access(当前 Office 365 版本)中的未绑定表单模块中。
虽然我找到了解决方法,但我真的很想了解原因(并向可能遇到相同问题的其他人留下提示)!
【问题讨论】:
-
Shell 有时更喜欢变体而不是(例如)字符串,所以如果你有字符串,请尝试将 strURL 声明为 Variant。
-
已确认:将
strURL声明为变体按预期工作。如果我声明strURL & vbNullString!,VBA 是否会在我的解决方法中将类型转换为 Variant? -
我不能确定为什么连接 vbNullString 使其“可接受” -
TypeName(s & vbNullString)其中s被声明为 String 仍然输出“String” -
@Tim Williams:好的。也许您想发布您的建议(将变量声明为
Variant作为答案,我可以接受。虽然我们不知道这个烂摊子的背景,但我认为这足以帮助其他人防止我运行的错误进入。