在Excel中复制格式

时间:2017-09-27 10:28:51

标签: excel vba

我正面临一个我一直在使用的小块VBA的问题。

我在A列中有值,我只希望粗体值保留在A列中。

我使用的代码是:

Sub CopyBoldText()
Columns("A:A").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrBelow = 0
Dim c As Range
For Each c In Intersect(Columns("B"), ActiveSheet.UsedRange)
If c.Font.Bold Then c.Offset(, -1).Value = c.Value
Next c
End Sub

我的问题是A列中的值是在复制值并插入A列时前进零的数字,这些前导值将被删除。

我尝试在以下内容之间改变CopyOrigin开关:

xlFormatFromLeftOrBelow = 0
xlFormatFromLeftOrBelow = 1
xlFormatFromRightOrBelow = 0
xlFormatFromRightOrBelow = 1

但每次值仍然没有前导零。

3 个答案:

答案 0 :(得分:1)

尝试添加行

Columns("A:A").NumberFormat = "@"
Selection.Insert之后

。这将使整个列文本的格式成为您不会丢失数字前导零的唯一方法。

答案 1 :(得分:0)

如果这是格式问题,为什么不复制整个列的PasteSpecial格式。

Columns("B").Copy
Columns("A").PasteSpecial Paste:=xlPasteFormats

答案 2 :(得分:0)

试试这个

Sub CopyBoldText()
    Columns("A").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightOrAbove
    Columns("B").Copy
    Columns("A").PasteSpecial xlPasteFormats
    Application.CutCopyMode = False

    Dim c As Range
    For Each c In Intersect(Columns("B"), ActiveSheet.UsedRange)
        If c.Font.Bold Then c.Offset(, -1).Value = c.Value
    Next c
End Sub