我知道还有其他类似的问题,但我没有找到适合我的答案。我有一个程序,按月编写销售报告。如果日期范围小于三年,它可以正常工作,但是当我输入更大的日期范围时,我会收到此错误。使用断点我发现错误发生在代码的这一部分
For iColl = (iReportCollumns + 2) To MaxY
xlApp.Cells(x, iColl) = "=SUM(" & GetColumnName(iColl) & (x + 1) & ":" & GetColumnName(iColl) & (x + iRowsPerRecord) & ")"
Next iColl
由于这是为了工作,我无法透露很多代码,因此我将尽力详细解释这里发生了什么。如果您需要更多代码,请告诉我,我会看到我可以发布的内容。该报告的位置各有多个(但相同)销售类型。对于每种销售类型,报告按月显示总销售额。
因此,销售按最高级别分组到各个位置,每个销售类型的子组都显示为电子表格的单独行。月份是电子表格的列。 iReportCollumns + 2表示为每个位置显示的基本信息,以便销售数据在此后的列中开始。 iColl代表当前列,iRowsPerRecord代表销售类型的数量。在我的测试用例中,每条记录有三行,总共60个月有五年,iReportCollumns = 9,因此每行总共有71列。 MaxY表示每行的列数,因此在这种情况下为71。这段代码为每个位置创建一个总计行。我的测试用例中有两个位置,因此有6行数据和2行总计。总计行位于每个位置的数据行之前。
逐步执行这个for循环,我发现它在iColl = 52时停止,而它仍然在第一个总行上运行。所以在我收到此错误之前,它甚至没有到达数据行。但是它确实插入了所有列的列名,但是一旦它尝试编写和公式就会中断。我可以插入Excel工作表的列数有一些限制吗?
我的另一种解决方案是将其限制为每个报告最多只显示24个月,这适用于其他类似的报告。这个解决方案没问题,但我宁愿让用户选择更大的日期范围,如果他们愿意的话。