2017-09-27 91 views
0

我遇到了一個我一直在使用的小塊VBA問題。在Excel中複製格式

我在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 

但每個值仍然會出現沒有前導零的時間。

+0

那麼你怎麼樣保存在A列中的前導零?我想你已經做了像格式化文本一樣的東西?在這種情況下,爲新列做類似的工作 – Greedo

回答

1

嘗試添加行

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

Selection.Insert後。這將使整個列文本的格式,這是唯一的方式,你不會失去數字上的前導零。

+0

你好,謝謝,這很好,代碼現在正在工作 –

0

如果這是一個格式問題,爲什麼不把整個列的格式與PasteSpecial一起復制。

Columns("B").Copy 
Columns("A").PasteSpecial Paste:=xlPasteFormats 
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 
+0

謝謝你的迴應,但我仍然面臨同樣的問題,使用列(「A:A 「).NumberFormat =」@「如下建議糾正了問題 –