2013-05-29 97 views
0

我正在嘗試做一些應該很簡單的事情。我有VBA代碼在一個Excel宏,這是改變一些文本。 因此,例如,更改"Text 111" to text "001"Range.Replace不按預期格式化

該代碼運行,並更改文本,但我失去了前導零。我想保持領先的零。我已經嘗試了一些東西,比如

jRange.NumberFormat = "###" 
.Replace "Text 333", "003", xlWhole, ReplaceFormat:=True 

我也試着設置的格式像柱:

jRange.Columns("G").NumberFormat = "###" 

感謝您的幫助。

下面是示例代碼

Sub FixIt() 
Dim jRange As Range 
Set jRange = ActiveSheet.Range("G2:G1000") 


With jRange 

.Replace "Text 111", "001", xlWhole 
.Replace "Text 222", "002", xlWhole 
.Replace "Text 333", "003", xlWhole 
.Replace "Text 444", "077", xlWhole 

End With 
End Sub 

回答

2

作爲一個起點,格式化整個工作表爲文本。通過單擊列標題左側的小按鈕並在行標題的上方執行此操作。這將選擇整個工作表。

然後,在主頁選項卡上,選擇'數字'組中的'文本'。

這樣做,如果有點惡毒。

另一種方式,如果新的單元格不是計算的一部分,就是用一個單引號前綴每個數字;例如

.Replace "Text 333", "'003", xlWhole, ReplaceFormat:=True 
+0

完美。單引號起作用。謝謝 – user2432812

+0

沒問題,但要記住它會影響計算流程。 – Bathsheba

0

我知道這是一個老問題,但更正確地回答這個問題,正確的改變將是改變你的一次嘗試,.NumberFormat = "###",以.NumberFormat = "000"0.NumberFormat中始終充當可見的指導原則,而#則充當「必要時」的指導原則。

相關問題