【问题标题】:Add checkboxes to UserForm based on cell value根据单元格值向用户窗体添加复选框
【发布时间】:2013-03-09 22:54:27
【问题描述】:

我对 VBA 很陌生,才 3 天......但我发现它非常有用且易于使用,但现在我遇到了一个问题。 我需要使用不同的复选框制作一个用户窗体,但我需要根据工作表的一列中使用的信息自动添加它们。 我相信我可以使用 For .. Each .. Next 但我真的不知道如何填写复选框。 这是我现在唯一的解决方案,但我无法制作不同的复选框,只有一个。

For Each rCell In Range("B1:B" & LastRow)
    If rCell.Value <> "" Then
        UserForm1.Controls.Add ("Forms.CheckBox.1")
    End If
Next

我需要做的另一件事是在添加复选框后填充复选框的属性,以便之后我可以使用这些值。

任何帮助将不胜感激,谢谢!

【问题讨论】:

    标签: excel checkbox vba


    【解决方案1】:
    UserForm1.Controls("Checkbox" & i).Value 
    

    【讨论】:

      【解决方案2】:

      我确定您之前已经得到了答案,但是由于这出现在我的 Google 搜索中,我想我会发布另一个答案。将以下代码放入您的用户窗体中:

      Option Explicit
      
      Private Sub UserForm_Initialize()
      
      Dim curColumn   As Long
      Dim LastRow     As Long
      Dim i           As Long
      Dim chkBox      As MSForms.CheckBox
      
      curColumn = 1 'Set your column index here
      LastRow = Worksheets("Sheet1").Cells(Rows.Count, curColumn).End(xlUp).Row
      
      For i = 1 To LastRow
          Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & i)
          chkBox.Caption = Worksheets("Sheet1").Cells(i, curColumn).Value
          chkBox.Left = 5
          chkBox.Top = 5 + ((i - 1) * 20)
      Next i
      
      End Sub
      

      您需要修改代码以满足您的特定需求,但这将帮助您入门。

      【讨论】:

        【解决方案3】:

        我认为,先看看这个先前的答案,因为它解释了您需要的原则。

        Add Controls To A Frame

        【讨论】:

        • 谢谢,但这不是我要找的。我需要以动态方式添加元素,因此 Form.CheckBox.1 的名称应该类似于 Form.CheckBox.[i]。至少这是第一件事。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        • 2020-11-12
        • 1970-01-01
        • 2021-10-27
        • 2021-06-07
        相关资源
        最近更新 更多