2012-07-27 11 views
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 

除了確認複選框比其他選項小的隨機出現以外,它會很好。下面的截圖顯示了我的意思。

Screenshot of form

有沒有人遇到過這個問題?

+1

控件生成後,請使用'Me.Repaint'。 – 2012-07-27 02:20:01

+0

謝謝。這正是需要的。 – 2012-07-27 04:09:54

+0

@SiddharthRout你介意發表你的答案作爲答案嗎?這樣我就可以關閉這個問題。謝謝:) – 2012-07-27 04:23:31

回答

1

我會建議使用repainting用戶窗體動態添加控件後。

重繪方法完成指定表單的任何待定屏幕更新。在窗體上執行時,Repaint方法還可以完成窗體控件的任何待定重新計算。

如果對象的內容或外觀發生變化,並且您不想等到系統自動重新繪製區域,則此方法非常有用。 Me.Repaint只是通過重畫表格來更新顯示屏

+0

出於某種原因,這不是所有的時間。我會一直堅持。也許我需要在幾個不同的地方給它打電話。 – 2012-07-31 02:02:58

+1

我很想看到你的文件,如果這是一種可能性:) – 2012-07-31 02:17:05

+0

不幸的是,NDA阻止我提供它。 – 2012-07-31 02:28:51

0

我有同樣的問題,因爲我的重繪沒有工作。我通過將CheckBox的AutoSize屬性設置爲True解決了這個問題,我再也沒有問題了。