【发布时间】:2014-02-14 07:23:51
【问题描述】:
我有一个 VSTO 解决方案,可以更正突出显示的单元格中的数据。我遇到的问题是,如果用户选择了整个行/列,程序会在最后一个 populated 单元格被处理很久之后循环数以千计的空单元格。
我的代码如下所示:
var addIn = Globals.ThisAddIn;
Excel.Worksheet sheet = addIn.Application.ActiveSheet;
Excel.Range range = addIn.Application.Selection;
foreach (Excel.Range cell in range.Cells)
{
var val = cell.Value2;
if (val == null)
continue;
我看过关于如何使用的主题:
AdvancedFilter(Excel.XlFilterAction.xlFilterInPlace, Type.Missing)
但我似乎无法将两者联系起来。我希望我的“范围”对象仅限于填充单元格,或者当我超过最后一个值时能够短路我的 foreach 循环。
我想过做这样的事情:
if (cell.Row > populatedRange.Row ||
cell.Column > populatedRange.Column)
break;
但是,如果选择了整行/列以外的其他内容(用户选择了填充范围之外的单元格,并且所有后续填充的单元格都被忽略),这可能会破坏代码。
我知道我遗漏了一些简单的东西,但我的尝试(和搜索)没有得到答案。
【问题讨论】: