【问题标题】:Multiple selection based on checkboxes基于复选框的多选
【发布时间】:2021-03-24 21:46:25
【问题描述】:

我有一个用户窗体,其中有 6 个复选框。复选框的作用是在Excel中选择一个唯一的范围。每个复选框对应 Excel 工作表中的不同范围。

我想知道您可以使用什么方法来确保当用户选择最多 6 个复选框的组合时,Excel 会选择所选复选框的相应范围。

例如:

  • Checkbox1 编程为选择范围 A1
  • Checkbox2 编程为选择范围 H3
  • Checkbox3 编程为选择范围 F6

如果用户勾选 Checkbox1 和 Checkbox2 那么你如何告诉 Excel 在不使用 If 语句的情况下选择 A1 和 H3,因为 6 个复选框的组合将意味着很多 If 语句。

无论如何,当 Checkbox1 被选中时,它会将该选择保留在内存中并将其添加到下一个选择中。

谢谢

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您将遍历复选框,并使用Application.Union() 构建一个范围(SO 上有很多这样的例子)。完成循环后,选择构建范围。

    或者你可以构建一个像“H3,F6”这样的字符串并使用Range(rangeString).Select

    例如:

    Sub CheckSelection()
        Dim s As String, i As Long, sep
        For i = 1 To 6
            With Me.Controls("Checkbox" & i)
                If .Value = True Then
                    s = s & sep & .Tag   'ranges are stored in checkboxes' Tag property
                    sep = ","
                End If
            End With
        Next i
        If Len(s) = 0 Then s = "A1" 'default selection if none chosen...
        ActiveSheet.Range(s).Select
        Debug.Print s
    End Sub
    
    Private Sub CheckBox1_Click()
        CheckSelection
    End Sub
    '...
    ' etc
    '...
    Private Sub CheckBox6_Click()
        CheckSelection
    End Sub
    
    

    【讨论】:

      猜你喜欢
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-26
      • 2013-11-17
      • 1970-01-01
      • 2012-03-06
      相关资源
      最近更新 更多