带$的内置字符串函数

时间:2018-10-03 13:35:29

标签: excel vba

使用内置函数返回诸如Left之类的字符串,还是使用附加了$Left$)的相同函数之间有什么区别吗?

此输出:

Debug.Print Left("Foo", 2)
Debug.Print Left$("Foo", 2)

总是

Fo
Fo

我怀疑这完全是同一回事,$版本仅出于某些兼容性原因而存在。

2 个答案:

答案 0 :(得分:5)

有类型的函数(以$结尾的函数)返回String。未键入的版本返回Variant。在内部,它们由一对不同的函数处理(对于Left,它是_B_str_Left_B_var_Left)。

如果您将返回值分配给String或期望String的参数,则使用类型化版本(Left$)可以避免隐式转换为Variant 。同样,如果您要分配给Variant,则使用无类型版本可以避免强制转换。

答案 1 :(得分:3)

Left $()需要一个字符串作为参数,而Left()需要一个变体。因此,如果您知道将始终向其传递一个字符串,则使用Left $()会更快。