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