2014-06-07 62 views
3

我有一個相當複雜的Excel VBA項目,在32位系統上運行良好,我現在正在嘗試使它在64位系統上也能正常工作。我已經解決了所有的函數聲明,但仍然遇到一些與數據類型有關的問題。使長變量在64位和32位Excel中工作VBA

做一些研究,我想出這個(從MSDN頁):

的實際數據類型LongPtr解析取決於Office的版本,它在運行:LongPtr解決爲在Office的32位版本和LongPtr解決爲LongLong在64位版本的Office中。

但是,這是否意味着我可以從

Dim x as Long 

我所有的Dim語句改爲

Dim x as LongPtr 

我應該做的是無處不在?或者我得到了棍棒的錯誤結局?有沒有這種情況會導致無效或應該避免這種變化?

+0

你是否需要聲明該類型?如果你只是把變量作爲變量(不要聲明類型),你的代碼可能會稍微慢一些,但是VBA應該在後面做很多努力。換句話說 - 爲什麼不把它當作「長」呢?爲什麼你想要創建一個變量64位,當它顯然只需要32位長。我想知道你是否正在解決一個不存在的問題。也許你可以更清楚地解釋(用一個小代碼示例)_如果你認爲你需要的東西不是「長」。 – Floris

+0

你不需要那樣做。只是['使用LongPtr指針和句柄'](http://msdn.microsoft.com/en-us/library/office/gg251378%28v=office.15%29.aspx) –

+0

我同意@LưuVĩnhPhúc - 你都在想這個。 – Floris

回答

-1

嘗試LongLong。從規格來看,LongLong看起來像是32型的替代品,而是Long型的替代品。

+2

不,不需要LongLong,如果你只想要32位值。它是[只在64位平臺上有效的聲明類型](http://msdn.microsoft.com/zh-cn/library/office/gg278463%28v=office.15%29.aspx) –