只是想知道,VBA与VB .NET的PadLeft和PadRight方法有什么相同之处吗?
到目前为止,每当我想要一个字符串并使其具有前导空格的固定长度时,我会根据字符串的长度执行For ... Next循环.
例如,我将使用以下代码将字符串格式化为带有前导空格的8个字符:
intOrdNoLen = Len(strOrdNo)
For i = 1 To (8 - intOrdNoLen) Step 1
strOrdNo = " " & strOrdNo
Next
Run Code Online (Sandbox Code Playgroud)
有没有办法在VBA中用更少的行做同样的事情?
Lit*_*les 72
我不相信有任何显式PADLEFT
或PADRIGHT
函数,但您可以使用SPACE
和LEFT
或RIGHT
前面的空格组合,然后获取正确的X个字符.
PADLEFT
strOrdNo = RIGHT(Space(8) & strOrdNo, 8)
Run Code Online (Sandbox Code Playgroud)
如果你想要一个字符而不是空格,你可以使用STRING
而不是空格(左边的例子用X填充):
strOrdNo = RIGHT(String(8, "X") & strOrdNo, 8)
Run Code Online (Sandbox Code Playgroud)
PADRIGHT
strOrdNo = LEFT(strOrdNo & Space(8), 8)
strOrdNo = LEFT(strOrdNo & String(8, "X"), 8)
Run Code Online (Sandbox Code Playgroud)
Bra*_*rad 15
你可以使用这些.将它们放在公共模块中
'如果输入字符串长于总长度,则NB失败
Function PadLeft(text As Variant, totalLength As Integer, padCharacter As String) As String
PadLeft = String(totalLength - Len(CStr(text)), padCharacter) & CStr(text)
End Function
Function PadRight(text As Variant, totalLength As Integer, padCharacter As String) As String
PadRight = CStr(text) & String(totalLength - Len(CStr(text)), padCharacter)
End Function
Run Code Online (Sandbox Code Playgroud)
由于我们通常在左侧填充,因此Format()函数更短,更简单:
Format(number, " ")
Format(number, "00")
Run Code Online (Sandbox Code Playgroud)
Format("abc","!@@@@@@") ' width >= 6; pad right side with spaces
Format("abc","@@@@@@") ' width >= 6; pad left side with spaces
Run Code Online (Sandbox Code Playgroud)