2

我正在使用 Excel 中的用户表单,每次都必须动态生成。它可以列出许多(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

除了确认复选框看起来比其他复选框小的随机事件之外,它会很好。下面的屏幕截图显示了我的意思。

表格截图

有没有人遇到过这个问题?

4

2 回答 2

1

我建议repainting您在动态添加控件后使用 Userform。

Repaint 方法完成指定表单的任何挂起的屏幕更新。在窗体上执行时,Repaint 方法还完成窗体控件的任何挂起的重新计算。

如果对象的内容或外观发生变化并且您不想等到系统自动重新绘制该区域,则此方法很有用。Me.Repaint只需通过重绘表单来更新显示

于 2012-07-27T04:32:13.157 回答
0

我遇到了同样的问题,因为我的重绘不起作用。我通过将 CheckBox AutoSize 属性设置为 True 解决了这个问题,我再也没有问题了。

于 2014-04-04T11:59:23.483 回答