【问题标题】:Creating checkboxes in userform depending on parameters根据参数在用户表单中创建复选框
【发布时间】:2014-10-26 15:57:15
【问题描述】:

我希望用户选择他想在哪些工作表上创建新的文本行。但是他能够选择的工作表数量可能会随着时间的推移而变化,我不想硬编码工作表的名称。

这是我打算做的一个例子(“o”代表复选框):

o 01.2013
o 07.2013
o 01.2014
o 07.2014

我创建了一个带有空框的用户表单来放置我的复选框,并将这段代码添加到用户表单中:

Private Tck(10) As MSForms.CheckBox

Private Sub UserForm_Initialize()

Dim ws As Worksheet
Dim i As Long

i = 1

For Each ws In ActiveWorkbook.Worksheets
    If Left(ws.Name, 3) = "T2M" Then
      Set Tck(i) = Frame1.Controls.Add("Forms.Checkbox.1", "Checkbox" & i)
      Tck(i).Caption = Right(ws.Name, 7)
      i=i+1
    End If
Next

End Sub

但它只在最后一张表中添加了一个复选框,用于验证 if 测试。

我尝试在两次迭代之间进行偏移,但我无法修改 Tck(i) 的位置,例如使用 Tck(i).top

我也尝试了这个问题的答案:Adding controls to a frame in an Excel userform with VBA,但它也不起作用。

【问题讨论】:

    标签: excel vba checkbox


    【解决方案1】:

    您的复选框在那里,您只是看不到它们,因为它们相互重叠。您更改“顶部”值的想法是正确的。

    Public Sub addCheckboxes()
        Dim ws As Worksheet
        Dim i As Integer
        Dim tck As MSForms.CheckBox
        Dim offset As Integer: offset = 5
    
        For i = 1 To Worksheets.Count
            Set ws = Worksheets(i)
            Set tck = Frame1.Controls.Add("Forms.Checkbox.1", "Checkbox" & i, True)
            tck.Top = offset
    
            offset = offset + 15
    
        Next i
    End Sub
    

    【讨论】:

    • 完美运行!谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    • 2018-08-17
    相关资源
    最近更新 更多