【问题标题】:Automatic selection of checkbox in excel VBA在excel VBA中自动选择复选框
【发布时间】:2015-11-24 15:59:31
【问题描述】:

我已经维护了一个 Excel 表,其中 A 列中列出了特定产品的所有参数,并且在 D 列中,我需要从 A 列中的所有参数集中选择的参数很少。

是否有可能在 vba 中触发点击事件,它应该在 A 列和 D 列之间进行比较,并在找到参数时自动选中复选框。

感谢任何帮助!

【问题讨论】:

  • 您可以查看Worksheet_Change-Event。您能否描述一下,为什么要选中该复选框?根据参数是否是参数名称列表的一部分,使用工作表公式输出是/否会相当容易
  • @Macro Getrost - 我想要自动复选框选择的原因是,列表可能会增长到近 100 或 150 个参数,并且用户手动比较每个参数需要花费大量时间,因此我让它自动化,我们可以节省大量时间
  • 我的意思是,如果您不选中复选框而有一个列,例如,这是否足够? C 列,根据参数是否列在给定名称中,它只会说是或否?
  • 是的,我确实同意您的方法,但有时用户可能希望在比较完成后取消选择/选择几个参数,在这些情况下提及是或否不会帮助。

标签: excel vba checkbox


【解决方案1】:

好的,你可以这样做:

将复选框(确保它们是格式控制复选框)放在C列中。(确保复选框完全在单元格中)

在 Worksheetmodul 中发布:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim chk As CheckBox
Dim check As Boolean
Dim rng As Range

For Each chk In ActiveSheet.CheckBoxes

    Set rng = Range("D:D").Find(what:=chk.TopLeftCell.Offset(0, -2).Value, _
    LookIn:=xlValues, _
    lookat:=xlWhole, _
    searchorder:=xlByRows, _
    searchdirection:=xlNext, _
    MatchCase:=False)

    If Not rng Is Nothing Then

        chk.Value = True

    End If

Next chk

End Sub

每次在工作表中更改值时,都会触发 sub。

【讨论】:

  • 您可以考虑添加一个按钮,单击该按钮会运行此子程序,因为每次有人触发事件时,都会选中复选框。因此,如果有人取消选中了几个复选框并对某个值进行了更改,那么他们将再次被选中。
  • 非常感谢 Marco,这是我所期待的。一切正常。再次感谢!
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 2016-11-01
  • 2015-11-02
  • 1970-01-01
  • 2021-08-23
相关资源
最近更新 更多