将范围格式化为7个数字长,添加前面的“0”

时间:2017-10-05 04:40:46

标签: excel-vba vba excel

似乎无法让这个工作。我有代码将数据从工作簿复制到另一个工作簿。我想要它做的是 - 在它复制数据后,范围被格式化为文本(允许前面的零)并格式化为7个字符长 - 其中额外的零添加在前面以弥补字符数(希望有道理)。

示例:如果数字是1234,则格式为0001234

任何人都可以帮我吗?这是我到目前为止所尝试的......

ThisWorkbook.Activate
       Range("B9").Select
       Selection.PasteSpecial Paste:=xlPasteAll



    Range("B9", Range("B8").End(xlDown)).Select
    If Not Selection.HasFormula Then
Selection = Selection.Value
Selection.NumberFormat = "Custom"
Selection.NumberFormat = "0000000000"
End If

2 个答案:

答案 0 :(得分:1)

假设您的数据当前是文本,您需要做的就是更改单元格格式,然后有效地重新输入数据,您可以这样做:

Selection.NumberFormat = "0000000"
Selection.Value = Selection.Value

答案 1 :(得分:0)

根据您的评论,您可以试试这个:

Dim helper As Range
With Sheet1
    Set helper = .Range("B8", .Range("B8").End(xlDown)).Offset(, 1)
    'if you choose to offset by 2 columns, using column D instead as helper
    'change [-1] in below formula to [-2]
    helper.FormulaR1C1 = "=TEXT(RC[-1],""0000000"")"
    helper.Copy: .Range("B8").PasteSpecial xlPasteValues
    helper.ClearContents
End With

注意,这将使用下一列C作为帮助列。
将其调整为您选择的任何空列。