Range.Replace未按预期格式化

时间:2013-05-29 14:13:16

标签: excel vba excel-vba string-formatting

我正在尝试做一些应该简单的事情。我在excel宏中有 VBA 代码,用于更改某些文本。 因此,例如,更改"Text 111" to text "001"

代码运行,并更改文本但我丢失了前导零。我想保持领先的零。我尝试过很多东西,比如

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 个答案:

答案 0 :(得分:2)

作为起点,将整个工作表格式化为文本。通过单击列标题左侧的小按钮并在行标题上方执行此操作。这将选择整个工作表。

然后,在主页选项卡上,选择“数字”组中的“文本”。

如果有点严厉,那就行了。

另一种方式,如果新单元格不是计算的一部分,则使用单引号为每个数字加前缀; e.g。

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

答案 1 :(得分:0)

我知道这是一个老问题,但为了更准确地回答,正确的改变是将您之前的尝试.NumberFormat = "###"更改为.NumberFormat = "000"0.NumberFormat中始终是明显的指导原则,而#则充当“必要时”指南。