使用内置函数返回诸如Left
之类的字符串,还是使用附加了$
(Left$
)的相同函数之间有什么区别吗?
此输出:
Debug.Print Left("Foo", 2)
Debug.Print Left$("Foo", 2)
总是
Fo
Fo
我怀疑这完全是同一回事,$
版本仅出于某些兼容性原因而存在。
答案 0 :(得分:5)
有类型的函数(以$
结尾的函数)返回String
。未键入的版本返回Variant
。在内部,它们由一对不同的函数处理(对于Left
,它是_B_str_Left
和_B_var_Left
)。
如果您将返回值分配给String
或期望String
的参数,则使用类型化版本(Left$
)可以避免隐式转换为Variant
。同样,如果您要分配给Variant
,则使用无类型版本可以避免强制转换。
答案 1 :(得分:3)
Left $()需要一个字符串作为参数,而Left()需要一个变体。因此,如果您知道将始终向其传递一个字符串,则使用Left $()会更快。