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

本文关键字:是否 范围 选择 检查 Excel 何检查 VSTO | 更新日期: 2023-09-27 18:21:54

是否有任何方法可以检查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();

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

删除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]