如何在Excel宏中使VBA从0开始计数而不是1

时间:2011-03-22 07:04:09

标签: excel-vba vba excel

我们编写了一个宏来生成一系列图表,然后将它们传输到Word。当访问这样的形状时,这在Excel 2007中按预期工作: 形状(0)......但在Excel 2010中我们不得不说:形状(1)。有没有办法告诉Excel从0开始计数?

2 个答案:

答案 0 :(得分:4)

这是一个明亮的微软工程师决定使VB收集索引从1开始的遗留问题。我认为这是VB4设计的时候。

理由是让索引从1运行到N而不是0到N-1“更容易”。

因此,包括Excel在内的许多COM对象模型都遵循此模型,因此像工作表,形状等集合都从1到N进行索引。

我很惊讶你的断言Shapes(0)在Excel 2007中按预期工作。它当然没有在Excel 2003中,并且它似乎不太可能会改变。

<强>更新

我在Excel 2007中对此进行了测试,Shapes(0)确实引用了集合中的第一个Shape - 就我所见,与Shapes(1)相同。这是Excel 2003和Excel 2007之间的变化,我找不到任何信息 - 我怀疑这是Excel 2007中的错误。

根据您的说法,听起来Excel 2010已恢复为与Excel 2003相同的行为(即已修复Excel 2007错误)。如果您希望代码适用于所有版本的Excel,请使用从1到N的索引号。

答案 1 :(得分:0)

声音 - 从此处显示的简要统计数据 - 如Excel 2010错误。

通常,为Excel 2007编写的所有脚本都应该在Excel 2010中保持不变。