我有一个大型 VSTO 应用程序,它采用命名范围并在整个过程中添加行。然后,工作表有一个按钮,该按钮应擦除命名范围内的所有行(但仍保持范围不变)。但是,当我运行该循环时,它会随机停止工作。没有错误消息,没有警告,只是停止运行。有些行被删除,但不是全部,被删除的行数似乎是随机的。我的代码非常简单,唯一特别的是我希望前两行永远不会被删除。这是我的代码
Excel.Workbook wb = (Excel.Workbook)Globals.ThisWorkbook.InnerObject;
Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets["MySheet"];
Excel.Range rng = ws.get_Range("MyRange");
int totalRun = 0;
foreach (Excel.Range row in rng.Areas[1].Rows)
{
if(totalRun>1)
row.EntireRow.Delete(Excel.XlDirection.xlUp);
totalRun++;
}
如您所见,我认为问题与区域或其他仅给我部分设置的问题有关,但似乎并非如此。我要删除的行是文本和数字的混合。同样,有些行会删除,但其他行不会删除,而且看起来是随机的。范围增长到大约 500 行,这个循环将删除少至 10% 的行和高达 75% 的行
此外,由于代理错误消息,我已经更改了我的应用程序属性之一。我认为这也会有所帮助,但它没有 - 看起来像
[assembly: ExcelLocale1033(false)]
帮助!