使用VBA替换丢失格式excel cell

时间:2013-01-29 15:49:13

标签: excel vba formatting

我使用带有标签的Excel模板,必须使用VBA替换为输入值。

为此,我使用了:

Cells.Replace What:="&/TDT/&", Replacement:="123456987654321456654444", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:= _
        True, ReplaceFormat:=False

但执行此替换后单元格中显示的值为1,23457E + 23。我尝试在单元格设置中使用不同的格式,我尝试更改ReplaceFormat和SeachFormat参数而不更改结果。

任何人都知道为什么excel不尊重细胞的格式?

已使用的格式为已替换单元格的文本,Office版本为2007/2010。我需要的是在单元格中看到123456987654321456654444而不是替换后的1,23457E + 23。

2 个答案:

答案 0 :(得分:0)

您可以做的是使用Value属性和Find方法结合实现安全(或更安全)替换,如下所示:

Sub SafeReplace(ByVal What As String, ByVal Replacement As String)
    Set cell = Cells.Find(What:=What, LookAt:=xlPart, MatchCase:=False, SearchFormat:=False)
    Do While Not cell Is Nothing
        cell.Value = Replacement
        Set cell = Cells.FindNext(cell)
    Loop
End Sub

然后使用它

SafeReplace "&/TDT/&", "123456987654321456654444"

它应该尊重细胞的格式。

答案 1 :(得分:0)

可以在值前面使用

'将其视为文本:

Cells.Replace What:="&/TDT/&", Replacement:="'123456987654321456654444"