自调整用户窗体大小
Self Adjusting Userform Size
目标是一个用户窗体,它可以自动调整大小以显示所有可见控件,但没有额外的死角 space。
顶部始终可见三个组合框,但下方是 26 个标签及其关联的五个选项 button/checkboxes。这 26 行将全部开始隐藏,并且仅在特定条件下可见。
三个组合框的第一个将说明 26 行中有多少行可能需要可见。然而,只有当第二个组合框显示是时,它们才会可见。
我正在使用 Excel 2013.
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value > 0 And Me.ComboBox2.Value = "Yes" Then
Vision
End If
End Sub
Private Sub ComboBox2_Change()
If Me.ComboBox1.Value > 0 And Me.ComboBox2.Value = "Yes" Then
Vision
End If
End Sub
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
End With
With ComboBox2
.AddItem "Yes"
.AddItem "NO"
End With
With ComboBox3
.AddItem "1"
.AddItem "2"
End With
With Me
.Controls("Label1").Visible = False
.Controls("Label2").Visible = False
.Controls("Label3").Visible = False
.Controls("Label4").Visible = False
.Controls("Label5").Visible = False
.Controls("Label6").Visible = False
End With
With Me
.Controls("Checkbox1").Visible = False
.Controls("Checkbox2").Visible = False
.Controls("Checkbox3").Visible = False
.Controls("Checkbox4").Visible = False
.Controls("Checkbox5").Visible = False
.Controls("Checkbox6").Visible = False
End With
End Sub
Private Sub Vision()
Dim n As Long
With Me
.Controls("Label1").Visible = False
.Controls("Label2").Visible = False
.Controls("Label3").Visible = False
.Controls("Label4").Visible = False
.Controls("Label5").Visible = False
.Controls("Label6").Visible = False
End With
With Me
.Controls("Checkbox1").Visible = False
.Controls("Checkbox2").Visible = False
.Controls("Checkbox3").Visible = False
.Controls("Checkbox4").Visible = False
.Controls("Checkbox5").Visible = False
.Controls("Checkbox6").Visible = False
End With
For n = 1 To ComboBox1.Value
With Me
.Controls("Label" & n).Visible = True
.Controls("Checkbox" & n).Visible = True
End With
Next n
End Sub
我找到了调整用户表单以适应不同显示器大小或在角落添加拖动条以手动调整大小的方法。
这是一种可能的方法。
Private Sub UserForm_Activate()
CheckSize
End Sub
Private Sub CommandButton1_Click()
Me.lblTest.Visible = Not Me.lblTest.Visible
CheckSize
End Sub
Private Sub CheckSize()
Dim h, w
Dim c As Control
h = 0: w = 0
For Each c In Me.Controls
If c.Visible Then
If c.Top + c.Height > h Then h = c.Top + c.Height
If c.Left + c.Width > w Then w = c.Left + c.Width
End If
Next c
If h > 0 And w > 0 Then
With Me
.Width = w + 40
.Height = h + 40
End With
End If
End Sub
我发现问题出在显示设置上 - 我的显示设置为 100%,但其他人的显示设置为 150%,因此当他们将其设置回 100% 时,他们可以正确查看
目标是一个用户窗体,它可以自动调整大小以显示所有可见控件,但没有额外的死角 space。
顶部始终可见三个组合框,但下方是 26 个标签及其关联的五个选项 button/checkboxes。这 26 行将全部开始隐藏,并且仅在特定条件下可见。
三个组合框的第一个将说明 26 行中有多少行可能需要可见。然而,只有当第二个组合框显示是时,它们才会可见。
我正在使用 Excel 2013.
Private Sub ComboBox1_Change()
If Me.ComboBox1.Value > 0 And Me.ComboBox2.Value = "Yes" Then
Vision
End If
End Sub
Private Sub ComboBox2_Change()
If Me.ComboBox1.Value > 0 And Me.ComboBox2.Value = "Yes" Then
Vision
End If
End Sub
Private Sub UserForm_Initialize()
With ComboBox1
.AddItem "1"
.AddItem "2"
.AddItem "3"
.AddItem "4"
.AddItem "5"
.AddItem "6"
End With
With ComboBox2
.AddItem "Yes"
.AddItem "NO"
End With
With ComboBox3
.AddItem "1"
.AddItem "2"
End With
With Me
.Controls("Label1").Visible = False
.Controls("Label2").Visible = False
.Controls("Label3").Visible = False
.Controls("Label4").Visible = False
.Controls("Label5").Visible = False
.Controls("Label6").Visible = False
End With
With Me
.Controls("Checkbox1").Visible = False
.Controls("Checkbox2").Visible = False
.Controls("Checkbox3").Visible = False
.Controls("Checkbox4").Visible = False
.Controls("Checkbox5").Visible = False
.Controls("Checkbox6").Visible = False
End With
End Sub
Private Sub Vision()
Dim n As Long
With Me
.Controls("Label1").Visible = False
.Controls("Label2").Visible = False
.Controls("Label3").Visible = False
.Controls("Label4").Visible = False
.Controls("Label5").Visible = False
.Controls("Label6").Visible = False
End With
With Me
.Controls("Checkbox1").Visible = False
.Controls("Checkbox2").Visible = False
.Controls("Checkbox3").Visible = False
.Controls("Checkbox4").Visible = False
.Controls("Checkbox5").Visible = False
.Controls("Checkbox6").Visible = False
End With
For n = 1 To ComboBox1.Value
With Me
.Controls("Label" & n).Visible = True
.Controls("Checkbox" & n).Visible = True
End With
Next n
End Sub
我找到了调整用户表单以适应不同显示器大小或在角落添加拖动条以手动调整大小的方法。
这是一种可能的方法。
Private Sub UserForm_Activate()
CheckSize
End Sub
Private Sub CommandButton1_Click()
Me.lblTest.Visible = Not Me.lblTest.Visible
CheckSize
End Sub
Private Sub CheckSize()
Dim h, w
Dim c As Control
h = 0: w = 0
For Each c In Me.Controls
If c.Visible Then
If c.Top + c.Height > h Then h = c.Top + c.Height
If c.Left + c.Width > w Then w = c.Left + c.Width
End If
Next c
If h > 0 And w > 0 Then
With Me
.Width = w + 40
.Height = h + 40
End With
End If
End Sub
我发现问题出在显示设置上 - 我的显示设置为 100%,但其他人的显示设置为 150%,因此当他们将其设置回 100% 时,他们可以正确查看