问题描述
在迭代中,我需要在迭代器之前附加零。如果迭代器的值小于10,则需要“ 00”,如果大于或等于10,则需要添加“ 0”。我尝试了几种可能性,但“ J”的值未用零更新。请帮助进行操作。
如果我在手表中添加了此表达式并检查了显示为“ 000”的值,但变量J不会使用该值进行更新以进行进一步的验证。
*******
Dim int_DoubleZero As Integer = "00"
Dim int_SingleZero As Integer = "0"
Dim J As Integer
xl_LastUsed_Row = xlSH.UsedRange.Rows.Count
xl_LastUsed_Column = xlSH.UsedRange.Columns.Coun
For J = 0 To xl_LastUsed_Column
If J < 10 Then
J = CStr(int_DoubleZero) + Cstr(J)
ElseIf J = 10 And J < 100 Then
Format(J,"00")
J = CStr(int_SingleZero) + Cstr(J)
End If
Next
解决方法
您要串联一个String,然后在分配给J
时将其转换回整数。这会去除字符串中的前导零。您需要一个String变量来保留新值。
Dim int_DoubleZero As Integer = "00"
Dim int_SingleZero As Integer = "0"
Dim J As Integer
Dim k as String
xl_LastUsed_Row = xlSH.UsedRange.Rows.Count
xl_LastUsed_Column = xlSH.UsedRange.Columns.Count
For J = 0 To xl_LastUsed_Column
If J < 10 Then
k = CStr(int_DoubleZero) + Cstr(J)
ElseIf J = 10 And J < 100 Then
k = CStr(int_SingleZero) + Cstr(J)
End If
Next
操纵循环迭代器通常是一种不好的做法,因为它可能会导致意外的问题。 J
也将作为循环的最后迭代结束。
假定您将Numeric
数据用作String
,否则将数字001设为1或0001.5设为1.5则没有意义。因此,对于数字的字符串表示形式,您可以使用:
.Padleft(length,Char)
示例:
For i As Integer = 0 To 111
Console.WriteLine(i.ToString.PadLeft(3,CChar("0")))
Next
' here are also decimals inside
Console.WriteLine(CStr(1.25.ToString("N2")).PadLeft(6,CChar("0")))
或者您可以使用如下所示的直接格式字符串:
'for Integers
.ToString("000")
For i As Integer = 0 To 111
Console.WriteLine(i.ToString("000"))
Next
'for Decimals
.ToString("000.00")
For i As Integer = 0 To 111
Console.WriteLine((i + (0.7)).ToString("000.00"))
Next