我正在使用Excel中的Userform,每次都必须动态生成。它可以列出许多(100+)行,这些行的格式完全相同。这些是由以下代码段生成的。
' ctextbox
Set ctl = .Controls.Add("Forms.Textbox.1")
With ctl
.Top = 12 + linetop
.Left = 464.9
.Width = 140
.Height = 18
.Name = FieldName & "_ctextbox"
End With
' cshow
Set ctl = .Controls.Add("Forms.CommandButton.1")
With ctl
.Top = 13.1 + linetop
.Left = 611.35
.Width = 41.95
.Height = 18
.Name = FieldName & "_cshow"
.Caption = "Show All"
End With
' confirm
Set ctl = .Controls.Add("Forms.Checkbox.1")
With ctl
.Top = 13.5 + linetop
.Left = 659
.Width = 44.95
.Height = 17.25
.Name = FieldName & "_confirm"
.Caption = "Confirm"
End With
除了随机出现确认复选框小于其余复选框之外,它会很好。下面的截图显示了我的意思。
之前有没有人遇到过这个问题?
答案 0 :(得分:1)
我建议您在动态添加控件后使用repainting
Userform。
Repaint方法完成指定表单的任何挂起的屏幕更新。在表单上执行时,Repaint方法还完成对表单控件的任何挂起重新计算。
如果对象的内容或外观发生变化,并且您不想等到系统自动重新绘制区域,则此方法很有用。 Me.Repaint
只需重新绘制表单
答案 1 :(得分:0)
我有同样的问题,因为我的重绘不起作用。我通过将CheckBox AutoSize属性设置为True解决了这个问题,我已经没有问题了。