【问题标题】:Excel function to check for check box marked?Excel函数检查标记的复选框?
【发布时间】:2014-10-12 17:15:30
【问题描述】:

我是使用 excel 工作的新手。基本上,如果在给定列中选中了所有相关复选框,我会尝试在结果框中打印一些语句。对于给定的列,其布局如下:

A                     B
Number of checkboxes: 8
Overall status:       ["Pass" if all 8 checkboxes are checked below, else "fail"]
Checkboxs:            checkbox 1 []
                      checkbox 2 []
                       ...
                      checkbox 8 [X]

我正在使用表单控件复选框,如何引用单元格 b2 中的 8 个复选框中的每一个?

【问题讨论】:

  • 我必须使用宏吗?我想将此作为一个函数进行评估,这样我就不必点击一个单元格,或者对其进行一些手动操作来评估
  • 问题是对于给定的单元格,我需要在特定于该单元格的复选框旁边有一个描述。如果我使用纯文本,那么我必须检查是否存在 X,如果描述中有 X,这会使事情变得复杂。或者我可以只检查单元格的最后一个字符吗?

标签: excel checkbox


【解决方案1】:

您将需要 VBA。

Sub ckBoxChecked()
    Dim allChecked As Boolean
    Dim ckbx As Variant
    For Each ckbx In ActiveSheet.CheckBoxes
        If ckbx.Value > 0 Then
            allChecked = True
        Else
            allChecked = False
            Exit For
        End If
    Next
End Sub

【讨论】:

  • 我必须使用宏吗?我想将此作为一个函数进行评估,这样我就不必点击一个单元格,或者对其进行一些手动操作来评估
【解决方案2】:

您可以右键单击复选框,转到格式控制并将其链接到单元格。然后,该单元格中将包含 True 或 False,具体取决于该框是否被选中。然后,您可以使用 if 公式(例如,=if(A1=TRUE, ...)确定单元格是否为真。如果为真,则选中该框。由于您有 8 个复选框,因此您可能需要类似

=if(AND(A1=TRUE, A2=TRUE, A3=TRUE, ..., A8=TRUE), "Pass", "Fail")

如果您确实对自动链接到复选框正下方单元格的宏感兴趣,您可以将每个复选框分配给一个宏,例如这个宏

Private Sub CheckBox1_Click()
  thisLink = ActiveSheet.Shapes("Check Box 1").TopLeftCell.Offset(2).Address()
  ActiveSheet.Shapes.Range(Array("Check Box 1")).Select
  With Selection
    .LinkedCell = thisLink
  End With
  ActiveCell.Select
End Sub

【讨论】:

  • 如何选择当前选中或未选中复选框下的单元格?
  • 当您右键单击复选框时,选择格式控件,然后在单元格链接中,将单元格引用放在您希望显示 True 或 False 的位置(例如,C3)。为您拥有的每个复选框执行此操作。
  • 是否有更可扩展的方法,我只是希望复选框下方的单元格适当标记为 T/F。我不想硬编码特定的单元格
  • 我想知道如何在链接到复选框的宏中执行此操作。谢谢
  • 我的方法没有硬编码。您链接到的单元格将根据是否选中该框自动填充 true 或 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多