Vba 用零填充一位数

Vba 用零填充一位数,vba,excel,for-loop,Vba,Excel,For Loop,我有一个这样的循环,可以将工作表保存为CSV文件,但我的前9个工作表是name likesinani-01。。。sinani-09(与sinani-1…sinani-9不同)。如何仅在小于10的数字之前连接0 Sub Adder() Dim animal As String Dim i As Integer For i = 1 To 120 animal = "sinani-" & i Sheets(animal).SaveAs "

我有一个这样的循环,可以将工作表保存为CSV文件,但我的前9个工作表是name like
sinani-01。。。sinani-09(与sinani-1…sinani-9不同)。如何仅在小于10的数字之前连接
0

Sub Adder()
    Dim animal As String
    Dim i As Integer
    For i = 1 To 120
        animal = "sinani-" & i
        Sheets(animal).SaveAs "E:\Data\CSV\" & animal & ".csv", xlCSV
    Next i
End Sub

&i
替换为
&IIF(i<10,“0”)&i

编辑时:尽管在本例中,
Format
提供了比
IIF
更干净的解决方案,
IIF
技巧在调整输出时还有一些其他用途。例如,如果您想通知用户找到了多少满足某些条件的单元格,您可以使用

MsgBox n & "cell" & IIF(n <> 1,"s","") & " found"
msgboxn&“cell”和IIF(n1,“s”和“)&“found”

要优雅地处理第五行中的复数和单数结尾,请使用如下格式函数:

animal = "sinani-" & Format(i, "#00")
#
可选地表示一个数字(即,仅当
i
中有那么多数字时才出现),
0
明确表示一个数字,如果
i
没有足够的数字,则使用前导零。

VBA有一个
格式()
函数,您可以使用它来填充数字

animal = "sinani-" & Format$(i, "00")

这将用
0
填充单个数字。您的两位和三位数字将继续按预期工作。

用前导的一系列零连接起来,并根据需要从右侧剥离尽可能多的数字

animal = "sinani-" & Right("00" & i, 2)

'alternate for many leading zeroes (e.g. DUNS number)
animal = "sinani-" & Right(String(9, "0") & i, 9)