2014-06-07 63 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) –