Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
In Excel 2003 and below the following code worked great to position a form
next to the active cell. With 2007 the line: hWndXLChart = FindWindowEx(hWndXLDesk, 0&, "EXCELE", vbNullString) returns 0. I assume it's because of the new charting functionality in 2007. Does anyone know a way to get that line working? Thanks, Jeremy ------------------------------------------------------------------------------------------- Public ActiveForm As String Declare Function FindWindow Lib "user32" Alias "FindWindowA" _ (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, _ ByVal lpsz1 As String, _ ByVal lpsz2 As String) As Long Declare Function GetWindowRect Lib "user32" _ (ByVal HWND As Long, _ lpRect As RECT) As Long Declare Function GetDC Lib "user32" _ (ByVal HWND As Long) As Long Declare Function ReleaseDC Lib "user32" _ (ByVal HWND As Long, _ ByVal hdc As Long) As Long Declare Function GetDeviceCaps Lib "gdi32" _ (ByVal hdc As Long, _ ByVal nIndex As Long) As Long Const HWNDDESKTOP As Long = 0 Const LOGPIXELSX As Long = 88 Const LOGPIXELSY As Long = 90 Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Sub ShowAtCell() Dim DC As Long Dim WinFont As Integer Dim ZoomFactor As Single Dim winRect As RECT Dim hWndXL As Long Dim hWndXLDesk As Long Dim hWndXLChart As Long Dim ChtObj As ChartObject Dim TargetRange As Range OutlierForm.Hide Set TargetRange = ActiveCell.Offset(0, 1) Set ChtObj = ActiveSheet.ChartObjects.Add(0, 0, 20, 20) With ChtObj .Top = TargetRange.Top .Left = TargetRange.Left .Activate End With hWndXL = FindWindow("XLMAIN", Application.Caption) hWndXLDesk = FindWindowEx(hWndXL, 0&, "XLDESK", vbNullString) hWndXLChart = FindWindowEx(hWndXLDesk, 0&, "EXCELE", vbNullString) GetWindowRect hWndXLChart, winRect ChtObj.Delete DC = GetDC(HWNDDESKTOP) WinFont = GetDeviceCaps(DC, LOGPIXELSX) ReleaseDC HWNDDESKTOP, DC ZoomFactor = (ActiveWindow.Zoom - 100) * 0.005 With OutlierForm .StartUpPosition = 0 .Top = (winRect.Top * 72 / WinFont) + ZoomFactor .Left = (winRect.Left * 72 / WinFont) + ZoomFactor If Workbooks(Mgr_File).ReadOnly Then .Caption = "Outlier Explanation [Read Only]" .Show End With End Sub ------------------------------------------------------------------------------------------- |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Active cell position for macro | Excel Worksheet Functions | |||
move within ss by active cell position, NOT by cell names | Excel Programming | |||
In macros, an instruction that will return the position of the Active Cell | Excel Programming | |||
Relative Cell position NOT working with or without macro | Excel Discussion (Misc queries) | |||
Active Cell Position Using Go To Or Hyperlink | Excel Programming |