考虑一个简单的循环:
i = 0
For Each objFile In objFolder.Files
MsgBox (Right("000" + i, 3))
i = i + 1
Next
我假设这会返回(当前文件夹中包含200个文件):
001
002
...
099
...
200
但事实并非如此。我通过谷歌搜索“在循环计数中添加填充零”(及其变体)在线找到的任何其他解决方案都不起作用。
有人可以告诉我如何做到这一点(尽可能少的代码)?非常感谢任何帮助!
答案 0 :(得分:3)
原因是“+”运算符执行数学+因为你有一个可以转换为数字和实数的字符串,所以“000”+ 5给出数字5.你需要“& “这里的运算符,它连接文本(在这种情况下,结果将是你期望的“0005”)。
答案 1 :(得分:0)
以下可能会:
MsgBox (Format(i,"000"))
答案 2 :(得分:0)
根据您的要求,要填充的零长度是已知的。以下是一个更灵活的目的。说当文件夹中有超过一千个文件时,你不能说1001'st文件是第一个文件(你的代码将它固定为3位数字)。
基本上,如果你知道要填充的数字的最大长度,你可以从下面的 PadNum()中创建一个函数。
Dim PadLen
PadLen = Len(CStr(objFolder.Files.Count))
i = 0
For Each objFile In objFolder.Files
i = i + 1
MsgBox PadNum(i) & vbTab & objFile.Name
Next
'...
Function PadNum(x)
PadNum = String(PadLen - Len(CStr(x)), "0") & x
End Function