作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们编写了一个宏,可以生成大量图表,然后将它们传输到 Word。当访问如下形状时,这在 Excel 2007 中按预期工作:Shapes(0)...但在 Excel 2010 中我们不得不说:Shapes(1)。有没有办法告诉Excel从0开始计数?
最佳答案
这是一些聪明的 Microsoft 工程师决定让 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 的索引号。
关于excel - 如何在Excel宏中使VBA从0而不是1开始计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5387845/
我是一名优秀的程序员,十分优秀!