在Excel中复制格式

我正在使用一小块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 

但是每次数值依然出现在没有前导零的地方。

尝试添加行

 Columns("A:A").NumberFormat = "@" 

Selection.Insert 。 这将使整个列文本的格式,这是唯一的方式,你不会失去数字上的前导零。

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

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

尝试这个

 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