【问题标题】:Losing format excel cell using replace from VBA使用 VBA 中的替换丢失格式 excel 单元格
【发布时间】:2013-01-29 15:49:13
【问题描述】:

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

【问题讨论】:

  • 这很难,因为 Excel 最强大的本能就是将任何看起来有点像数字的东西转换成数字!我尝试了各种,没有成功。你唯一能做的就是在你的字符串“'1234....”的开头放一个单引号,它不会出现在工作表上,但会出现在值中,所以不是你想要的值商店。

标签: excel vba formatting


【解决方案1】:

您可以做的是结合使用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"

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

【讨论】:

  • @Rafael Chacon 有帮助吗?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 2021-05-26
    相关资源
    最近更新 更多