VSTO Excel:如何检查是否可以选择范围?

时间:2012-01-31 08:16:34

标签: c# excel vsto range

有没有办法检查是否可以选择(或以任何方式使用)范围,例如某种验证?

我遇到了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 :(得分:0)

删除后,您无法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]