2016-05-23 64 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