Hồ sơ quản lý chất lượng công trình (1)

PacificPR

Thành viên tích cực
Tham gia ngày
12 Tháng tư 2017
Bài viết
1,330
Được thích
2,045
Điểm
360
Nơi ở
Cái Bang

File đính kèm

HeSanbi

Thành viên tích cực
Tham gia ngày
24 Tháng hai 2013
Bài viết
1,308
Được thích
1,199
Điểm
560
Vẫn báo lỗi như cũ bạn ạ. chắc nên quay về bản office 32 bit cho lành
------------------------


type mismatch

Lỗi này xuất hiện ở đây vì đối số truyền vào Hàm WinAPI không tương thích với Nền tảng Office hoặc nền tảng Window đang xử dụng.

Tham số trong hàm API là As Long thì khai báo đối số truyền vào là:

Dim HWnd as Long

Tham số trong hàm API là As LongPtr Hoặc LongLong thì khai báo đối số truyền vào là:

Dim HWnd as LongPtr Hoặc LongLong
(Chỉ có trên Win64 bit)

Click vào OK sẽ có vùng code được tô, so sánh vị trí tham số trong hàm API để sửa đổi.

Ví dụ lỗi ở hàm SetWindowsHookEx, chuột phải vào tên hàm, chọn Definition để đi đến nơi khởi tạo hàm để sửa đổi.

Ví dụ Khai báo tương thích nền tảng hàm WinAPI:

JavaScript:
#IF VBA7 then
Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
#Else
Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As Long
#End If
Ví dụ Khai báo biến tương thích nền tảng:
JavaScript:
#If Win64 then
Dim HWnd as LongPtr 'Hoặc LongLong
#Else
Dim HWnd as Long
#End If
Ví dụ vận dụng:
JavaScript:
#If Win64 then
Dim lngMouseHook as LongPtr 'Hoặc LongLong
Dim lngAppInst as LongPtr 'Hoặc LongLong
#Else
Dim lngMouseHook as Long
Dim lngAppInst as Long
#End If

   lngAppInst =GetWindowLong(...)
   lngMouseHook = SetWindowsHookEx(..., AddressOf MouseHook ,lngAppInst ,... )


#If Win64 then
Function MouseHook(...,...,...,...) As LongPtr
#Else
Function MouseHook(...,...,...,...) As Long
#End If

End Function
 

Phamvanchat

Thành viên mới
Tham gia ngày
10 Tháng mười 2018
Bài viết
10
Được thích
5
Điểm
165
Tuổi
30
Bạn chụp cho mình cái lỗi đó nhé
Mình xóa bản office 64 bit vài bản office 32 bit ( có 10 phút) và chạy lại ổn định rồi. Tất cả là do bản office 64bit.

Lỗi khi xài office 64 bit đây bạn

2f6e25845c50a70efe41.png
Bài đã được tự động gộp:

------------------------


type mismatch

Lỗi này xuất hiện ở đây vì đối số truyền vào Hàm WinAPI không tương thích với Nền tảng Office hoặc nền tảng Window đang xử dụng.

Tham số trong hàm API là As Long thì khai báo đối số truyền vào là:

Dim HWnd as Long

Tham số trong hàm API là As LongPtr Hoặc LongLong thì khai báo đối số truyền vào là:

Dim HWnd as LongPtr Hoặc LongLong
(Chỉ có trên Win64 bit)

Click vào OK sẽ có vùng code được tô, so sánh vị trí tham số trong hàm API để sửa đổi.

Ví dụ lỗi ở hàm SetWindowsHookEx, chuột phải vào tên hàm, chọn Definition để đi đến nơi khởi tạo hàm để sửa đổi.

Ví dụ Khai báo tương thích nền tảng hàm WinAPI:

JavaScript:
#IF VBA7 then
Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As LongPtr, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As LongPtr
#Else
Declare PtrSafe Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As LongPtr, ByVal dwThreadId As Long) As Long
#End If
Ví dụ Khai báo biến tương thích nền tảng:
JavaScript:
#If Win64 then
Dim HWnd as LongPtr 'Hoặc LongLong
#Else
Dim HWnd as Long
#End If
Ví dụ vận dụng:
JavaScript:
#If Win64 then
Dim lngMouseHook as LongPtr 'Hoặc LongLong
Dim lngAppInst as LongPtr 'Hoặc LongLong
#Else
Dim lngMouseHook as Long
Dim lngAppInst as Long
#End If

   lngAppInst =GetWindowLong(...)
   lngMouseHook = SetWindowsHookEx(..., AddressOf MouseHook ,lngAppInst ,... )


#If Win64 then
Function MouseHook(...,...,...,...) As LongPtr
#Else
Function MouseHook(...,...,...,...) As Long
#End If

End Function
Em về bản office 32bit chạy được rồi anh ạ. Cảm ơn anh. Mong chủ top có time sửa đổi để chạy được cả 2 môi trường 32bit và 64bit ạ.
 

PacificPR

Thành viên tích cực
Tham gia ngày
12 Tháng tư 2017
Bài viết
1,330
Được thích
2,045
Điểm
360
Nơi ở
Cái Bang
Em về bản office 32bit chạy được rồi anh ạ. Cảm ơn anh. Mong chủ top có time sửa đổi để chạy được cả 2 môi trường 32bit và 64bit ạ.
Để mai hi sinh cái bản 32bit này. Ghost lại bản 64 xem nó bị làm sao mới được :D:D:D
 
Top Bottom