我有一个Excel vba公式,该公式从数据库连接中提取数据,并在工作表中填写数据。这部分效果很好!
不过,我需要的是一列(E)作为字母数字指示符,它基于单元格中向左(D)的数据。例;如果是D=1-9
然后E=1
,D=10-99
然后E=01
,D=100-999
然后E=001
。
我发现Sumit Bansal的一段代码似乎应该起作用。
Function AddLeadingZeroes(ref As Range, Length As Integer)
Dim i As Integer
Dim Result As String
Dim StrLen As Integer
StrLen = Len(ref)
For i = 1 To Length
If i <= StrLen Then
Result = Result & Mid(ref, i, 1)
Else
Result = "0" & Result
End If
Next i
AddLeadingZeroes = Result
End Function
这里是数据转储到工作表的一部分,我以为某种方式我认为是错误的,我也尝试了类型不匹配尝试1也没有引号。没事了
.Cells(intRow, 1).Value = "LockerTag.lwl"
.Cells(intRow, 2).Value = "3"
.Cells(intRow, 3).Value = rs("ID")
.Cells(intRow, 4).Value = rs("UnitQty")
.Cells(intRow, 5).Value = AddLeadingZeroes("1", StrLen(CStr(rs("UnitQty"))))
.Cells(intRow, 6).Value = rs("ID")
任何帮助将不胜感激!
答案 0 :(得分:0)
数字Log10(0-9、10-99等)给出前导零的数量。
Option Explicit
Sub test()
Debug.Print Log10(1)
Debug.Print Log10(10)
Debug.Print Log10(100)
Debug.Print Log10(1000)
End Sub
Private Function Log10(x)
Log10 = Log(x) / Log(10#)
End Function
输出:
0
1
2
3
答案 1 :(得分:0)
JNevill的建议非常有效。
转储函数并交换
.Cells(intRow, 5).Value = AddLeadingZeroes("1", StrLen(CStr(rs("UnitQty"))))
到
.Cells(intRow, 5).Value = String(Len(rs("UnitQty"))-1, "0") & "1"
非常感谢大家!