VSTO Excel: Как проверить, можно ли выбрать диапазон? - PullRequest
1 голос
/ 31 января 2012

Есть ли способ проверить, может ли диапазон быть выбран (или использован каким-либо образом), например, какой-то тип проверки?

У меня возникает эта проблема с VSTO 2.5 SE и Excel 2003. Всякий раз, когдаЯ удаляю эти строки, firstSelectedItem.Select () выдает ошибку HResult.Хорошо, я уже нашел способ обойти это, но я ищу "лучший" способ, какое-нибудь простое сравнение или около того, чтобы увидеть, действительно ли можно выбрать firstSelectedItem , или мне следуетпопробуйте выбрать другой диапазон.

Вот пример кода.



    using ExcelIntOp = Microsoft.Office.Interop.Excel;

    ExcelIntOp.Range firstSelectedItem = null;

    for (int i = selectedRange.Rows.Count; i > 0; i--)
    {
      firstSelectedItem = ((ExcelIntOp.Range)selectedRange.Cells[1, 1]);

      if (firstSelectedItem.Value2 == null)
          firstSelectedItem.EntireRow.Delete(System.Type.Missing);
    }

    if (firstSelectedItem != null)
      firstSelectedItem.Select();

1 Ответ

0 голосов
/ 09 февраля 2012

Вы не можете Select firstSelectedItem после того, как удалили его.Если вы не хотите проверять правильность firstSelectedItem перед выбором, а затем переписать его в действительную ячейку после удаления.

for (int i = selectedRange.Rows.Count; i > 0; i--)
{
  firstSelectedItem = ((ExcelIntOp.Range)selectedRange.Cells[i, 1]);

  if (firstSelectedItem.Value2 == null)
  {
      firstSelectedItem.EntireRow.Delete(System.Type.Missing);
      firstSelectedItem = ((ExcelIntOp.Range)selectedRange.Cells[i, 1]);
  }
}

firstSelectedItem.Select();

Кстати, я предполагаю, что вы неправильно набрали firstSelectedItem оператор присваивания, и он должен быть [i,1] не [1,1].

...