【问题标题】:Make only one checkbox tickable in a row?只能连续勾选一个复选框?
【发布时间】:2013-11-08 14:38:08
【问题描述】:

我连续有 5 到 6 个复选框(活动 x),我有 50 行。

有没有办法让一个复选框连续勾选(只有一个答案是 1、2、3、4 或 5)?

任何简单的 vba 都可以做到这一点,我不想为每个复选框编写代码。

【问题讨论】:

  • 您是否考虑过使用每行包含 5-6 个选项按钮的组框?组框确保只选择一个选项按钮...
  • 您应该在组框内使用Option Button。我的 anser Here 解释了如何获得这个,这对用户来说也更直观,因为,至少对我来说,当我看到复选框时,我假设允许多项选择,当我看到选项时,我知道我只能选择一个.同样,使用此路由后,无需其他代码,一旦您设置了组,Option Buttons 的默认操作将自行完成其余的工作。

标签: excel checkbox vba


【解决方案1】:

是的,可以做到,但是为什么要使用 ActiveX 控件和这么多额外的编码?为什么不是数据验证列表?看这个截图

如果您仍然想要 VBA 解决方案,那么我建议您使用 FORM 控件并使用他们的ALT Text 来配置它。事实上,我在其中一篇 SO 帖子中展示了如何使用 Alt Text 使用组类似控件

编辑:

如果你想走 VBA 之路,那么这里有另一种选择,DOESN'T 使用任何 FORM/Active X 控件

如下图所示排列工作表。

现在将此代码粘贴到工作表代码区域

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.CountLarge > 1 Then Exit Sub

    If Not Intersect(Target, Columns(2)) Is Nothing Then ClearCells Target.Row, 2
    If Not Intersect(Target, Columns(4)) Is Nothing Then ClearCells Target.Row, 4
    If Not Intersect(Target, Columns(6)) Is Nothing Then ClearCells Target.Row, 6
    If Not Intersect(Target, Columns(8)) Is Nothing Then ClearCells Target.Row, 8
    If Not Intersect(Target, Columns(10)) Is Nothing Then ClearCells Target.Row, 10
End Sub

Sub ClearCells(r As Long, c As Long)
    For i = 2 To 10 Step 2
        If i <> c Then
            With Cells(r, i)
                .Borders(xlDiagonalDown).LineStyle = xlNone
                .Borders(xlDiagonalUp).LineStyle = xlNone
                .ClearContents
            End With
        End If
    Next i
    With Cells(r, c)
        With .Borders(xlDiagonalDown)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With .Borders(xlDiagonalUp)
            .LineStyle = xlContinuous
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
            .Weight = xlThin
        End With
    End With
End Sub

现在用户所要做的就是选择任何一个灰色单元格,它将是Crossed Out。此外,如果同一行中有任何其他十字架,则它将被删除。

SAMPLE FILE

【讨论】:

  • 你能分享这篇文章吗?我从不知道您可以仅根据 Alt Text 对控件进行分组。
  • 仍在寻找它,但您不喜欢使用数据验证的想法吗?
  • 我不能使用数据验证,这是一种从 1 到 5 的反馈问题和评分,因此更容易打勾。问题是所有的复选框都可以打勾。
  • 如果你想走 VBA 之路,还有另一种选择,它不使用任何 FORM/Active X 控件。你会对此感兴趣吗?
猜你喜欢
  • 2018-08-10
  • 2021-11-23
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多