我连续有 5 到 6 个复选框(活动 x),我有 50 行。
有没有办法在一行中只勾选一个复选框(只有一个答案是 1、2、3、4 或 5)?
任何简单的 vba 都可以做到这一点,我不想为每个复选框编写代码。
是的,可以做到,但是为什么要使用 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
. 此外,如果同一行中有任何其他十字架,则它将被删除。