在excel单元格上保持格式化

时间:2010-01-07 06:34:37

标签: c# excel automation vsto

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

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

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

2 个答案:

答案 0 :(得分:2)

  

如果我使用ActiveCell.Value2 =“新值”   ActiveCell显示“新值”但丢失了用户定义的格式

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

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

(但要注意,这是'航空代码')。

答案 1 :(得分:0)

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