【发布时间】:2016-03-10 05:44:22
【问题描述】:
我的两个 Excel 表格位于我的项目中的两个不同工作表上,我遇到了一个奇怪的问题。我正在使用 VSTO,但 VBA 显示相同的结果:空表的行数在一种情况下为 0 行,在另一种情况下为 1 行(我假设插入行)。
设置
两个工作表:Sheet1、Sheet2
两个对应的命名 Excel 表:Sheet1Table、Sheet2Table
两个表都是空的,即只有一个空行,即插入行,不能删除。
我运行以下代码来确定数据行数(即不包括标题行):
Microsoft.Office.Tools.Excel.ListObject sheet1Table = Globals.Sheet1.Sheet1Table;
int numberOfListRows1 = sheet1Table.ListRows.Count;
和
Microsoft.Office.Tools.Excel.ListObject sheet2Table = Globals.Sheet2.Sheet2Table;
int numberOfListRows2 = sheet2Table.ListRows.Count;
结果是numberOfListRows1 为 1,numberOfListRows2 为 0,尽管结果(以正确者为准)应该相同。我比较了表格和工作表的属性,以及 Visual Studio 中的源文件,我没有发现任何差异。知道我应该寻找什么(哪个结果是正确的)?
【问题讨论】:
-
你是否使用 .add 和 .delete 添加行,而另一方面使用插入行、删除行,因为列表只计算 .add .delete ,因此您可能通过手动编辑来扭曲计数器桌子?
-
确实,这似乎是造成它的原因。如果手动删除所有行,则计数为“0”。那么,“1”会是正确的结果吗?我需要在计数之前以某种方式重置表格,以防它为空?
-
事实证明删除(手动或以编程方式)可以更正它。问题是表的创建方式。我选择了标题行和一个空行,然后单击“格式化为表格”。结果看起来像一个带有插入行的空表。即使在该行中的
COUNTA也是0。但实际上它是在执行ListRows.Count时计算的数据行。现在看起来很明显而且几乎是愚蠢的。
标签: excel vsto listobject vba