将Userform与Excel中的单元格对齐
我正试图在Excel中定位一个userform(名为UserForm1)以与Excel中的单元格引用对齐。如果我使用下面的第一个代码初始化表单,则userform在Excel屏幕中央的大小是正确的将Userform与Excel中的单元格对齐,excel,userform,vba,Excel,Userform,Vba,我正试图在Excel中定位一个userform(名为UserForm1)以与Excel中的单元格引用对齐。如果我使用下面的第一个代码初始化表单,则userform在Excel屏幕中央的大小是正确的 Private Sub UserForm_Initialize() With Me .Width = 200 .Height = 170 End With End Sub 但是,我想调整大小以对齐userform,使其覆盖单元格B3:D15。我试过了 Private Sub UserFo
Private Sub UserForm_Initialize()
With Me
.Width = 200
.Height = 170
End With
End Sub
但是,我想调整大小以对齐userform,使其覆盖单元格B3:D15。我试过了
Private Sub UserForm_Initialize()
With Me
.Top = Sheet1.Range("B3").Top
.Left = Sheet1.Range("B3").Left
.Width = Sheet1.Range("B3").Offset(0, 4).Left - Sheet1.Range("B3").Left
.Height = Sheet1.Range("B3").Offset(12, 0).Top - Sheet1.Range("B3").Top
End With
End Sub
但用户表单显示在功能区上(Excel缩放为100%)
考虑到屏幕分辨率/缩放大小,有没有一种方法可以正确执行此操作?首先,我很抱歉将此旧线程从死线程中恢复过来,但其他人对此问题进行了解答,因此要么无法完美执行,要么仅在特定情况下(全屏等)执行。
在许多论坛和其他相关问题上寻找了这些问题的答案后,我在一个法语论坛上找到了一些简单的代码,这些代码对于32位版本的excel(office 365)非常适用 在模块中:
Option Explicit
Private Declare Function GetDC& Lib _
"user32.dll" (ByVal hwnd&)
Private Declare Function GetDeviceCaps& _
Lib "gdi32" (ByVal hDC&, ByVal nIndex&)
Sub UserFormAlign()
' 1 inch = 72 points for usually 96 or 120 dpi
Dim x#, y#, w#, h#
x = GetDeviceCaps(GetDC(0), 88) / 72
y = GetDeviceCaps(GetDC(0), 90) / 72
With UserForm1
.StartUpPosition = 0
.Left = (ActiveWindow.PointsToScreenPixelsX(ActiveCell.Left * x) * 1 / x) + ActiveCell.Width
.Top = (ActiveWindow.PointsToScreenPixelsY(ActiveCell.Top * y) * 1 / y) + ActiveCell.Height
.Show 'if not already shown
End With
End Sub
通过将替换为UserForm1
,将替换为替换为Me
,并在需要时删除.Show
,可以很容易地从用户表单启动上面的代码(因为它可能已经出现在屏幕上,所以没有必要尝试显示自己)