首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多功能声明标记编译器错误VBA Excel

多功能声明标记编译器错误VBA Excel
EN

Stack Overflow用户
提问于 2017-10-01 08:36:18
回答 1查看 664关注 0票数 1

我已经更新了函数声明,以适应64位和32位Windows (VBA6 & VBA7)。我想保留这两个声明,因为我们的一些客户仍然使用Excel 2007。

问题是,在打开应用程序时,VBA6声明(在Else语句之后)有时(虽然并不总是)在Excel2016中抛出编译器错误(在Office365上测试,64位),尽管它永远不会被读取。

(编译错误:此项目中的代码必须更新,以便在64位系统上使用.)请检查和更新声明语句,并使用PtrSafe属性标记它们。)

有什么办法可以避免这种情况吗?

代码语言:javascript
复制
#If VBA7 Then
Private Declare PtrSafe Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long


Private Declare PtrSafe Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal 
dwProcessId As Long) As Long

#Else
Private Declare Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long

Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
#End If
EN

回答 1

Stack Overflow用户

发布于 2017-10-01 10:07:55

您对PtrSafe函数WaitForSingleObject的声明是错误的。这是科雷特的版本。

代码语言:javascript
复制
Declare PtrSafe Function WaitForSingleObject Lib "kernel32" _
                  Alias "WaitForSingleObject" ( _
                        ByVal hHandle As LongPtr, _
                        ByVal dwMilliseconds As Long _
                        ) As Long
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46510642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档