在Excel VBA中,str(1)返回带有前导空格

3
在Excel程序中,我进行调试时发现一个数字的字符串函数返回带有空格的数字:str(1)返回" 1"
据我所知,互联网上并没有关于这个问题的太多资料,因此我想知道这是一个故障还是我做错了什么。如果有办法解决这个问题,我会非常感激: Mid(Str(1), 2, 1) 这个操作将获取" 1"的第二个字符,并且如果数字长度为5位,例如,将结尾处的数字改为5,例如:Mid(Str(11111), 2, 5)
谢谢任何反馈,不过,使用这种解决方法,回答这个问题并不是必须的。
如果有帮助的话,我使用Office 365...

1
顺便提一下,你可以使用 LTrim() 代替 Mid()LTrim() 的主要目的是去除前导空格)。然而,也许更好的函数是 CStr() 而不是 Str(),因为 CStr() 在转换数字时不包括前导空格。 - chillin
2个回答

4

来自VBA参考:

当数字转换为字符串时,始终保留一个前导空格用于数字的符号。如果数字是正数,则返回的字符串包含一个前导空格并暗示加号。使用Format函数将您想要格式化为日期、时间、货币或其他用户定义格式的数字值进行转换。与Str不同,Format函数不包括数字符号的前导空格。

请参见:

Str函数


0

VBA的Str函数提供正数前导空格是为了对齐。

文本/字符串在工作表上默认左对齐。由于负数带有连字符,因此正数带有空格以保持对齐。

顺便说一下,如果省略VBA的Mid函数的第三个参数(字符数),则返回从第二个参数的起始位置开始的所有剩余字符。这意味着Mid(Str(<任何数字>), 2)将始终返回完整的数字,尽管任何负数的符号都将被省略。这在工作表的MID函数中不起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接