VBA 用户窗体可见范围
VBA UserForm visible range
我有一个尺寸为 (h*w) 180 * 240 的用户窗体。UserForm_Initialize()
事件将根据大量用户输入向此用户窗体添加控件,之后用户窗体将调整大小。我 运行 遇到的问题是用户窗体的可见范围小于实际范围。为了演示我已经使用以下代码插入了第二个用户表单:
Private Sub UserForm_Initialize()
Dim ctrl As Control
Dim i As Integer
For i = 1 To 2
Set ctrl = Me.Controls.Add("Forms.Label.1")
With ctrl
Debug.Print .Name
.Caption = i
.BorderStyle = 1
.Height = 10
.Width = 10
End With
Next i
Set ctrl = Me.Controls("Label1")
With ctrl
.Top = 0
.Left = 0
End With
Set ctrl = Me.Controls("Label2")
With ctrl
.Top = Me.Height - .Height
.Left = Me.Width - .Width
End With
End Sub
生成以下用户表单:
第一个标签恰好位于用户表单的顶部和左侧边缘,但第二个标签无处可见,因为它不在用户表单的可见部分。
如何让第二个标签正好位于用户表单可见部分的底部和右边缘,如下图所示? (我编辑了第一张图片以显示我想要的内容)
使用 InsideHeight
和 InsideWidth
属性:
With ctrl
.Top = Me.InsideHeight - .Height
.Left = Me.InsideWidth - .Width
End With
要更改 InsideHeight/InsideWidth,您必须计算实际的 Height/Width。为此,您需要知道每个用户窗体边框的宽度和标题栏的高度。例如,在用户窗体初始化的某处做
Static FormBorderSize as single, FormTitleSize as single
With Me
FormBorderSize = (Me.Width-Me.InsideWidth)/2
FormTitleSize = Me.Height-(Me.InsideHeight+Me.FormBorderSize)
End With
使用这两个值,您可以计算用户表单的总体 Height/Width 以获得所需的 InsideHeight/InsideWidth。
您可以将这两个变量声明为 Private 或 Public Properties 或如此处所示为 Static。
我有一个尺寸为 (h*w) 180 * 240 的用户窗体。UserForm_Initialize()
事件将根据大量用户输入向此用户窗体添加控件,之后用户窗体将调整大小。我 运行 遇到的问题是用户窗体的可见范围小于实际范围。为了演示我已经使用以下代码插入了第二个用户表单:
Private Sub UserForm_Initialize()
Dim ctrl As Control
Dim i As Integer
For i = 1 To 2
Set ctrl = Me.Controls.Add("Forms.Label.1")
With ctrl
Debug.Print .Name
.Caption = i
.BorderStyle = 1
.Height = 10
.Width = 10
End With
Next i
Set ctrl = Me.Controls("Label1")
With ctrl
.Top = 0
.Left = 0
End With
Set ctrl = Me.Controls("Label2")
With ctrl
.Top = Me.Height - .Height
.Left = Me.Width - .Width
End With
End Sub
生成以下用户表单:
第一个标签恰好位于用户表单的顶部和左侧边缘,但第二个标签无处可见,因为它不在用户表单的可见部分。
如何让第二个标签正好位于用户表单可见部分的底部和右边缘,如下图所示? (我编辑了第一张图片以显示我想要的内容)
使用 InsideHeight
和 InsideWidth
属性:
With ctrl
.Top = Me.InsideHeight - .Height
.Left = Me.InsideWidth - .Width
End With
要更改 InsideHeight/InsideWidth,您必须计算实际的 Height/Width。为此,您需要知道每个用户窗体边框的宽度和标题栏的高度。例如,在用户窗体初始化的某处做
Static FormBorderSize as single, FormTitleSize as single
With Me
FormBorderSize = (Me.Width-Me.InsideWidth)/2
FormTitleSize = Me.Height-(Me.InsideHeight+Me.FormBorderSize)
End With
使用这两个值,您可以计算用户表单的总体 Height/Width 以获得所需的 InsideHeight/InsideWidth。
您可以将这两个变量声明为 Private 或 Public Properties 或如此处所示为 Static。