2011-03-22 126 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

相關問題