基本上我想保留Excel单元格的现有格式。 如果我使用 ActiveCell.Value2 =“新值”;
ActiveCell显示“新值”但丢失了用户定义的格式(例如红色字体,蓝色背景),所有格式值都返回到Excel默认格式值。
注意:如果使用Excel替换单元格值,Excel将保留用户的格式。 将此操作记录为宏时,Excel使用属性FormulaR1C1,但根据MSDN,这是一个用于宏的属性。
答案 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