[英]VBA UserForm visible range
我有一個尺寸為(h * w)180 * 240的UserForm_Initialize()
。向此UserForm_Initialize()
添加的控件是基於大量用戶輸入的UserForm_Initialize()
事件,之后將調整用戶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
使用這兩個值,您可以計算用戶窗體的整體高度/寬度,以獲得所需的InsideHeight / InsideWidth。
您可以將這兩個變量聲明為“私有”或“公共屬性”,或聲明為“靜態”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.