|
'--------------API函数声明及常数定义-------------------------------------------------------------------------
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Const LOGPIXELSX = 88 '求屏幕横向分辨率
Private Const LOGPIXELSY = 90 '求屏幕纵向分辨率
'--------------API函数声明及常数定义-------------------------------------------------------------------------
Private Sub UserForm_Initialize()
Dim PixelsPerInchX As Long
Dim PixelsPerInchY As Long
Dim hdc As Long
Dim X, Y As Long
'----------------获取屏幕分辨率语句---------------------------------------------
hdc = GetDC(0)
PixelsPerInchX = GetDeviceCaps(hdc, LOGPIXELSX)
PixelsPerInchY = GetDeviceCaps(hdc, LOGPIXELSY)
ReleaseDC 0, hdc
'----------------获取屏幕分辨率语句---------------------------------------------
'----------------ActiveWindow.PointsToScreenPixelsX(0)为获取A1单元格左上角屏幕横坐标---------------------------------------------
'----------------ActiveWindow.PointsToScreenPixelsY(0)为获取A1单元格左上角屏幕纵坐标---------------------------------------------
'----------------PixelsPerInchX / 72意思为:点坐标(磅)转换为像素(pixel)坐标-----------------------------------------------------
With TRng
X = ActiveWindow.PointsToScreenPixelsX(0) + .Left * PixelsPerInchX / 72
Y = ActiveWindow.PointsToScreenPixelsY(0) + .Top * PixelsPerInchY / 72
'MsgBox TRng.AddressLocal
'MsgBox X
'MsgBox Y
End With
With STD_DLG
.Left = X
.Top = Y
End With
程序中的TRng是个公用变量,就是我点击的那个单元格.
引用了你的以上代码,我需要在点击单元格时,在单元格的右边显示对话框,结果位置始终不正确,请问怎么回事?
[ 本帖最后由 foxlandy 于 2009-7-7 09:37 编辑 ] |
|