Excel vba添加空格到一个单元达到一定的长度

我试图让A1到A6的单元格长度达到18。

它的当前值:

A233333 A0399 30000 3993833 11111 22222 

请注意,并非所有单元格中的值具有相同的长度。

我想用空格(“”)填充剩余的长度。 所以我写了下面的代码,但它似乎不工作:

 Sub PMAP_BAC_Code() Dim rCell As Range Dim rRng As Range Set rRng = Sheet1.Range("A1:A6") For Each rCell In rRng.Cells If Len(xCell) <> 18 Then xCell.FormulaR1C1 = " " End If Next rCell End Sub 

有人能帮助我吗?

为什么不使用Left$("foo" & String$(17," ") ,17)

 Sub PMAP_BAC_Code() Dim rCell As Range Dim rRng As Range Set rRng = Sheet1.Range("A1:A6") For Each rCell In rRng.Cells Const lMY_LENGTH As Long = 18 If Len(rCell) <> lMY_LENGTH Then rCell.Value2 = IIf(IsNumeric(rCell.Value2), "'", "") & Left$(rCell.Value2 & String$(lMY_LENGTH, " "), lMY_LENGTH) End If Next rCell End Sub 

折叠数字评论的反馈,我添加了一个单引号数字。 其他评论关于不排列文本的结尾仍然是真实的。

不要忘记格式也可以用来格式化string:

 Public Function myFormat(str As String) As String myFormat = Format(str, "!" & String(18, "@")) End Function 

编辑:我的function适用于当前的问题:

 Sub PMAP_BAC_Code() Dim rCell As Range Dim rRng As Range Set rRng = Sheet1.Range("A1:A6") For Each rCell In rRng.Cells rCell.NumberFormat = "@" rCell.Value = myFormat(rCell.Value) Next rCell End Sub 

尝试这个 :

 Sub PMAP_BAC_Code() Dim str As String Dim wk As Worksheet Set wk = Sheet1 For i = 1 To 6 str = wk.Range("A" & i).Value Do While Len(str) < 18 str = str & " " Loop wk.Range("A" & i) = str str = "" Next i End Sub 

如果列A只有数字1,那么上面的代码会再次将string“1”转换为“1”,所以我使用与chr(160)的NBSP连接,这将处理它

 Sub PMAP_BAC_Code() Dim str As String Dim wk As Worksheet Set wk = Sheet1 For i = 1 To 6 str = wk.Range("A" & i).Value Do While Len(str) < 18 str = str & Chr(160) Loop wk.Range("A" & i) = CStr(str) Debug.Print Len(wk.Range("A" & i)) Debug.Print Len(str) str = "" Next i End Sub