2011-03-22 44 views
2

我们编写了一个宏,它生成一系列图表,然后将它们传输到Word。在Excel 2007中,按照预期的方式工作时,像这样访问形状: Shapes(0)...但在Excel 2010中,我们必须说:Shapes(1)。有没有办法告诉Excel从0开始计数?如何在Excel宏中使VBA从0开始计数而不是1

回答

4

这是由一位明亮的微软工程师决定使VB集合索引从1开始的宿醉。我认为这是VB4的设计时。

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

其结果是,许多COM对象模型包括Excel遵循这一模式,让喜欢收藏表,形状等从1所有索引到N.

我在你的说法,形状(0)工作惊讶正如Excel 2007中的预期一样。它当然不在Excel 2003中,而且似乎不太可能会改变。

我在Excel 2007和形状测试此更新(0)确实引用第一形状集合中 - 一样形状(1)据我可以看到。这是Excel 2003和Excel 2007之间的变化,我找不到任何信息 - 我怀疑这是Excel 2007中的一个错误。

从您所说的话来看,它听起来像Excel 2010已恢复到相同的行为如Excel 2003(即Excel 2007错误已被修复)。如果你想要的代码适用于所有版本的Excel,请使用从1到N的索引号。

+0

那么,它确实在Excel 2007中有效。 :) – noocyte 2011-03-22 07:26:04

+0

我们结束了版本测试,并为当前版本做了“正确的事情”...跛脚,但只有及时的解决方案,我们可以找到... – noocyte 2011-05-06 08:38:03

+0

@noocyte - “当前版本的正确的东西” - if我的分析是正确的,我希望你可以在所有的Excel版本中使用索引1到N,包括Excel 2007.所以你不需要测试版本。 – Joe 2011-05-06 09:37:25

0

声音 - 从这里显示的简短统计数据 - 就像Excel 2010的错误。

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

+0

错误与否,只要我将它从零索引更改为1索引就会工作。 – noocyte 2011-03-22 07:20:48

相关问题