如何在循环计数中添加填充零?

时间:2014-01-14 10:22:57

标签: vba vbscript

考虑一个简单的循环:

i = 0
For Each objFile In objFolder.Files
    MsgBox (Right("000" + i, 3))
    i = i + 1
Next

我假设这会返回(当前文件夹中包含200个文件):

001
002
...
099
...
200

但事实并非如此。我通过谷歌搜索“在循环计数中添加填充零”(及其变体)在线找到的任何其他解决方案都不起作用。

有人可以告诉我如何做到这一点(尽可能少的代码)?非常感谢任何帮助!

3 个答案:

答案 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