Продолжайте форматирование в ячейке Excel - PullRequest
1 голос
/ 07 января 2010

В основном я хотел бы сохранить существующий формат ячейки Excel. Если я использую ActiveCell.Value2 = "новое значение";

ActiveCell отображает «новое значение», но теряет пользовательское форматирование (например, красный шрифт, синий фон), все значения форматирования возвращаются к значениям формата Excel по умолчанию.

Примечание. При замене значения ячейки в Excel Excel сохраняет формат пользователя. При записи этого действия в качестве макроса Excel использует свойство FormulaR1C1, но в соответствии с MSDN это свойство используется для макросов.

Ответы [ 2 ]

2 голосов
/ 07 января 2010

Если я использую 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

(но будьте осторожны, это «воздушный кодекс»).

0 голосов
/ 07 января 2010

Возможно, вы захотите скопировать ячейку и «вставить» форматирование обратно - http://www.ozgrid.com/forum/showthread.php?t=56324

...