基本上我想保留Excel單元格的現有格式。 如果我使用 ActiveCell.Value2 =「新值」;在Excel單元格上保留格式
ActiveCell顯示「新值」但失去用戶定義的格式(例如紅色字體,藍色背景),所有格式化值都會返回到Excel默認格式值。
注意:如果使用Excel替換單元格值,則Excel將保留用戶的格式。 將此操作記錄爲宏時,Excel使用屬性FormulaR1C1,但根據MSDN,此屬性用於宏。
基本上我想保留Excel單元格的現有格式。 如果我使用 ActiveCell.Value2 =「新值」;在Excel單元格上保留格式
ActiveCell顯示「新值」但失去用戶定義的格式(例如紅色字體,藍色背景),所有格式化值都會返回到Excel默認格式值。
注意:如果使用Excel替換單元格值,則Excel將保留用戶的格式。 將此操作記錄爲宏時,Excel使用屬性FormulaR1C1,但根據MSDN,此屬性用於宏。
如果我使用ActiveCell.Value2 =「新價值」 的ActiveCell顯示「新價值」,但失去用戶定義的格式化
不,它沒有,我只是測試它(與Excel 2003)。打開一個新的空文件,格式與一些顏色和用戶自定義數字格式一列,並在VBA編輯器的立即窗口中輸入
ActiveCell.Value2="1"
。現有的格式保持不變。所以,如果你有另一個場景來處理(格式丟失的地方),請詳細描述它。
編輯:如果這種行爲是在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
(但要小心,這是'空中密碼')。
您可能想要複製的單元和「粘貼」格式化回 - http://www.ozgrid.com/forum/showthread.php?t=56324
我會牢記這個想法,爲另一個功能要求,我需要做的,謝謝你的幫助 – 2010-01-08 03:46:26
我認爲這個問題只發生在使用Excel通過C# - 在VBA中它工作正常。 (這個問題被標記爲C#和VSTO,但實際上沒有提到它在這個問題:0) – ScottF 2010-01-07 07:19:19
對不起,我正在使用VSTO和C#,我發現這種行爲很煩人。 此解決方案沒有幫助,因爲我需要呈現多行和多列(100秒)的報告 – 2010-01-07 22:13:07
您是對的,value2不會更改格式,在清除內容和格式的代碼中存在range.clear調用。 – 2010-01-08 03:45:47