TwinBasic中需要 longlong,而 VB6中是long,是否可以在vb6中提前做好 #If Win64 Then
【常量】 #If VBA7 Then
【何时为】VBA 7.0 以上(Office 2010+) 或 TwinBasic
【True 含义】支持 LongPtr 、 PtrSafe 这两个关键字
-----------------------------------------------------------------------
【常量】#If Win64 Then
【何时为】在 64 位 的 VBA / TB 环境中编译时
【True 含义】实际运行在 64 位进程中
TwinBasic中直接用 LongPtr ,因为 LongPtr 在 32 位下就是 Long ,在 64 位下就是 LongLong , 无需自己判断 Win64 :
Private Sub Command1_Click()
#If VBA7 Then
Dim lngA As LongPtr ' TB/x86=Long, TB/x64=LongLong
#Else
Dim lngA As Long ' VB6 走这里
#End If
lngA = 3
Debug.Print lngA
End Sub只有在 VB6 兼容时才需要 #If VBA7 Then + LongPtr 包一下
再举一个针对API的例子(注意 As LongPtr 和 As Long):
#If VBA7 Then
Public Declare PtrSafe Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As LongPtr, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As LongPtr
#Else
Public Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
#End If