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();
删除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]
。