代码之家  ›  专栏  ›  技术社区  ›  mas_oz2k1

在Excel单元格中保留格式

  •  1
  • mas_oz2k1  · 技术社区  · 16 年前

    基本上我想保留Excel单元格的现有格式。 如果我使用 activecell.value2=“新值”;

    ActiveCell显示“新值”,但会丢失用户定义的格式(例如红色字体、蓝色背景),所有格式值都会返回到Excel默认格式值。

    注意:如果使用Excel替换单元格值,Excel将保留用户的格式。 将此操作记录为宏时,Excel使用属性Formular1c1,但根据msdn,此属性用于宏。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Doc Brown    16 年前

    如果我使用activecell.value2=“新值” ActiveCell显示“新值”,但会丢失用户定义的格式。

    不,它没有,我只是测试了它(用Excel2003)。打开新的空文档,用一些颜色和用户定义的数字格式格式化列,然后输入

    ActiveCell.Value2="1"
    

    在VBA编辑器的直接窗口中。现有格式保持不变。因此,如果您要处理另一个场景(格式丢失),请详细描述它。

    编辑:如果此行为在vsto中确实不同,作为解决方法,您可以尝试在更改值之前保存ActiveCell的相关格式信息,例如

    fci = ActiveCell.Range.Font.ColorIndex
    ici = ActiveCell.Range.Interior.ColorIndex
    pat = ActiveCell.Range.Interior.Pattern
    nf = ActiveCell.Range.NumberFormat
    

    然后改变值

    ActiveCell.Value2 = "new value"
    

    然后重新分配格式信息

    ActiveCell.Range.Font.ColorIndex = fci
    ActiveCell.Range.Interior.ColorIndex = ici
    ActiveCell.Range.Interior.Pattern = pat
    ActiveCell.Range.NumberFormat = nf
    

    (但请注意,这是“航空规则”)。

        2
  •  0
  •   ta.speot.is    16 年前

    您可能需要复制单元格并“粘贴”格式- http://www.ozgrid.com/forum/showthread.php?t=56324