2

我正在使用带有标签的 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 。

4

2 回答 2

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"

它应该尊重单元格的格式。

于 2013-02-01T18:04:56.807 回答
0

'可以在值前面使用以将它们视为文本:

Cells.Replace What:="&/TDT/&", Replacement:="'123456987654321456654444"
于 2016-09-14T20:25:52.410 回答