1

一部のコンピューターでは、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」

4

0 に答える 0