在模块(运行时)循环(下一个)期间生成复选框和文本框

时间:2013-08-30 08:15:12

标签: excel vba

我想从模块生成元素(复选框和文本框)到数组所具有的数组元素数量的userform。例如:

  • array4()
  • array4(1):“Peter Meier”
  • array4(2):“Joe Garner”
  • array4(3):“Phil Master”
  • 依此类推

  • 数组2()

  • array2(1):2
  • array2(1):2
  • array2(2):6
  • array2(3):160

两个数组总是具有相同数量的数组。

Userform应显示afterwoods:

  1. Checkbox / Textfield.Text = Peter Meier / Textfield.Text = 2
  2. Checkbox / Textfield.Text = Joe Garner / Textfield.Text = 6
  3. 等等 问候, Yab86

1 个答案:

答案 0 :(得分:0)

将两个值存储在同一个数组中可能会更优雅吗?

array(1,1) = "Peter Meier"
array(1,2) = "2"

array(2,1) = "Joe Garner"
array(2,2) = "2"

等...

关于你的问题,这样的事情可能是:

Sub Stuff()
    Dim vrData(2, 1) As Variant ' or vrData() and redim later
    Dim ctControl As Control
    Dim intPosX, intPosY As Integer
    Dim ufForm As BlankForm ' i.e. a blank userform you create first


    vrData(0, 0) = "Whatever"
    vrData(0, 1) = "3"
    vrData(1, 0) = "Something"
    vrData(1, 1) = "2"
    vrData(2, 0) = "Horse"
    vrData(2, 1) = "7"

    intPosX = 20
    intPosY = 20

    Set ufForm = New BlankForm

    For i = 0 To UBound(vrData, 1)
        Set ctControl = ufForm.Controls.Add("Forms.CheckBox.1")
        With ctControl
            .Caption = vrData(i, 0)
            .Left = intPosX
            .Top = intPosY
        End With

        Set ctControl = ufForm.Controls.Add("Forms.TextBox.1")
        With ctControl
            .Text = vrData(i, 1)
            .Left = intPosX + 100
            .Top = intPosY
        End With

        intPosY = intPosY + 20
    Next

    ufForm.Show
End Sub