使用ByVal VBA时出错

时间:2013-11-19 17:01:53

标签: vba byval

在某些计算机中,当我使用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)。但我有相同的操作系统,办公室和安全设置。它给出的错误是编译错误:

“隐藏模块中的编译错误:Module4”

0 个答案:

没有答案