LongPtr

Dim Value As LongPtr

LongPtr 被引入 VBA 以支持 64 位平台。在 32 位系统上,它被视为 Long ,在 64 位系统上,它被视为 LongLong

它的主要用途是提供一种在两种体系结构上存储和传递指针的可移植方式(请参阅在编译时更改代码行为) 。

虽然在 API 调用中使用操作系统将其视为内存地址,但应注意 VBA 将其视为有符号类型(因此受无符号签名溢出)。因此,使用 LongPtrs 执行的任何指针算术都不应使用 >< 比较。这个怪癖也使得在内存中添加指向有效地址的简单偏移量可能会导致溢出错误,因此在使用 VBA 中的指针时应该小心。

转换为 LongPtr 的转换函数是 CLngPtr()。对于浮点类型的转换,结果四舍五入到最接近的整数值,其中 .5 向上舍入(尽管它通常是一个内存地址,因此将其用作浮点计算的赋值目标最多是危险的)。