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