有没有办法检查是否可以选择(或以任何方式使用)范围,例如某种验证?
我遇到了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();
答案 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]
。