2016-05-23 26 views
0

我有一個用戶表單,包含5個複選框按鈕,用於5個pdf版本。 那麼,當用戶調用用戶窗體時,用戶窗體會初始化5個複選框按鈕以選擇其中的一個。目前,代碼非常靜態,並不太好。如何在VBA中動態添加複選框按鈕到用戶表單

這裏的例子:

If rs.EOF = False Then 
    Do Until rs.EOF Or i = 5 
    Select Case i 
     Case Is = 0 
     frmOne.Version5.Visible = True 
     frmOne.Version5.Caption = rs!versNo & "#" & rs!versFrom 
     frmOne.Version5.tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     Case Is = 1 
     frmOne.Version4.Visible = True 
     frmOne.Version4.Caption = rs!versNo & "#" & rs!versFrom 
     frmOne.Version4.tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     Case Is = 2 
     frmOne.Version3.Visible = True 
     frmOne.Version3.Caption = rs!versNo & "#" & rs!versFrom 
     frmOne.Version3.tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     Case Is = 3 
     frmOne.Version2.Visible = True 
     frmOne.Version2.Caption = rs!versNo & "#" & rs!versFrom 
     frmOne.Version2.tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     Case Is = 4 
     frmOne.Version1.Visible = True 
     frmOne.Version1.Caption = rs!versNo & "#" & rs!versFrom 
     frmOne.Version1.tag = rs!versNo & "_" & rs!FiD & ".pdf" 
    End Select 
    i = i + 1 
    rs.MoveNext 
    Loop 
End If 

要多的代碼,我認爲。所以,我的意圖是要確定它像下面的例子,但是這並不工作:

If rs.EOF = False Then 
    For i = 1 To 5 
     With frmOne 
     .Version & i &.Visible = True 
     .Version & i &.Caption = rs!versNo & "#" & rs!versFrom 
     .Version & i &.tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     End With 
     rs.MoveNext 
    Next i 
End If 

做任何人有一個想法,我怎麼能解決呢?

回答

1

您可以參考Controls集合使用名稱:

If rs.EOF = False Then 
    For i = 1 To 5 
     With frmOne.Controls("Version" & i) 
     .Visible = True 
     .Caption = rs!versNo & "#" & rs!versFrom 
     .tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     End With 
     rs.MoveNext 
    Next i 
End If 

要在運行時實際添加控件太:

Do While not rs.EOF 
    i = i + 1 
     With frmOne.Controls.Add("Forms.CheckBox.1", "Version" & i, True) 
     .Caption = rs!versNo & "#" & rs!versFrom 
     .tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     End With 
     rs.MoveNext 
Loop 
+0

什麼是複選框未在用戶表單中預定義?我如何將複選框添加到用戶窗體? – yuro

+0

使用控件集合的「添加」方法。 – Rory

+0

你的意思只是定義'With frmOne.Controls.Add(「Version」&i)...' – yuro

1

去像如下:

If rs.EOF = False Then 
    For i = 1 To 5 
     With frmOne.Controls("Version" & i) '<~~ use Controls collection of Userform object 
      .Visible = True 
      .Caption = rs!versNo & "#" & rs!versFrom 
      .Tag = rs!versNo & "_" & rs!FiD & ".pdf" 
     End With 
     rs.MoveNext 
    Next i 
End If 
+0

外觀下面的評論! – yuro