Я работаю над диалоговым окном импорта (из Excel), которое использует автоматизацию, чтобы позволить пользователю выбирать диапазоны ячеек для импорта. Когда диапазон выбран, я использую приемник событий, чтобы перехватить событие и выделить первую строку и первый столбец. Мне нужен способ отключить первую строку и столбец предыдущего выделения. Я не думаю, что безопасно просто получить выбранный диапазон во время изменения выделения и запомнить его, например, (psuedocode для краткости и ясности):
OnSelectionChange()
{
if (m_PrevSelection)
UnHilite(m_PrevSelection);
HiliteCurrentSelection();
GetSelectedRange(m_PrevSelection);
}
Я предполагаю, что простое удержание этого диапазона (полученного из _Application :: Selection) без его освобождения вызовет всевозможные проблемы (но, возможно, я ошибаюсь). Я не нашел способа скопировать диапазон (IRange Copy просто копирует содержимое ячейки из одного диапазона в другой).
Полагаю, я мог бы взять адреса ячеек диапазона и сохранить их, а затем воссоздать диапазон, начиная с того момента, когда мне нужно сделать подсветку, но мне кажется, что это происходит так часто, что мне интересно, есть ли у кого-нибудь еще более элегантное решение.