我有一个非常复杂的Excel VBA项目,它在32位系统上运行良好,我现在正试图让它适用于64位系统。我已经解决了所有函数声明,但仍然遇到Long
数据类型的一些问题。
做一些研究,我想出了这个(来自MSDN页面):
LongPtr 解析为的实际数据类型取决于其运行的Office版本: LongPtr 在32中解析为长 Office的位版本,以及64位版本的Office中 LongPtr 解析为 LongLong 。
但这是否意味着我可以从
更改所有Dim
语句
Dim x as Long
到
Dim x as LongPtr
我应该到处做什么吗?或者我得到了错误的结束?是否存在无法工作或应避免这种变化的情况?
答案 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的替代品。