使长变量在64位和32位Excel VBA中工作

时间:2014-06-07 08:49:19

标签: excel variables excel-vba vba

我有一个非常复杂的Excel VBA项目,它在32位系统上运行良好,我现在正试图让它适用于64位系统。我已经解决了所有函数声明,但仍然遇到Long数据类型的一些问题。

做一些研究,我想出了这个(来自MSDN页面):

  

LongPtr 解析为的实际数据类型取决于其运行的Office版本: LongPtr 在32中解析为 Office的位版本,以及64位版本的Office中 LongPtr 解析为 LongLong

但这是否意味着我可以从

更改所有Dim语句
Dim x as Long

Dim x as LongPtr

我应该到处做什么吗?或者我得到了错误的结束?是否存在无法工作或应避免这种变化的情况?

2 个答案:

答案 0 :(得分:1)

我同意@Ken White的回答 备注(有些答案):
- 您不要求将32位项目转换为64位项目(不能在32位上运行)。
- 你总是需要声明变量类型(如果你是一个优秀的程序员)

您仍然可以在Office 64位中使用Long数据类型。它将兼容在32位和64位Office中运行 但有时,您没有选择权,因为某些对象的属性与32位与64位的数据类型不同。 例如,如果您使用ADO:

Dim rstTest As ADODB.Recordset 
32位办公室

rstTest.RecordCount很长 rstTest.RecordCount是64位Office上的LongLong 如果要将rstTest.RecordCount存储到lngCount变量中,必须使用LongPtr声明此变量,否则它将无法在32位和64位上运行:

Dim lngCount As LongPtr  
lngCount = rstTest.RecordCount

答案 1 :(得分:-1)

尝试LongLong。从规范来看,LongLong看起来像是32位Long的替代品。