一部のコンピューターでは、byVal 修飾子を使用するとエラーが発生します。私は自分のコードにそれらのいくつかを持っていましたが、それらをすべて削除することができましたが、次のコードで必要です:
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, _
ByVal hdc As Long) As Long
Public Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, _
ByVal nIndex As Long) As Long
Const HWND_DESKTOP As Long = 0
Const LOGPIXELSX As Long = 88
Const LOGPIXELSY As Long = 90
'--------------------------------------------------
Public Function TwipsPerPixelX() As Single
'--------------------------------------------------
'Returns the width of a pixel, in twips.
'--------------------------------------------------
Dim lngDC As Long
lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelX = 1440& / GetDeviceCaps(lngDC, LOGPIXELSX)
ReleaseDC HWND_DESKTOP, lngDC
End Function
'--------------------------------------------------
Public Function TwipsPerPixelY() As Single
'--------------------------------------------------
'Returns the height of a pixel, in twips.
'--------------------------------------------------
Dim lngDC As Long
lngDC = GetDC(HWND_DESKTOP)
TwipsPerPixelY = 1440& / GetDeviceCaps(lngDC, LOGPIXELSY)
ReleaseDC HWND_DESKTOP, lngDC
End Function
エラーは ByVal によるものだと確信しています。私はより多くの機能でByValを使用していましたが、機能していませんでしたが、別の方法で(ByValを使用しないで)実行すると機能し、この機能を削除するだけで他のすべての機能が完全に機能します。理由がわかりません。
別の奇妙なことは、一部のコンピューター (Win8、office 2013) でのみ発生することです。しかし、OS、オフィス、セキュリティの設定は同じです。それが与えるエラーはコンパイルエラーです:
「非表示モジュールのコンパイル エラー: Module4」