需要5个有时依赖的复选框

时间:2013-11-21 15:31:42

标签: excel-vba vba excel

这看起来应该很简单,但我所有的论坛搜索都没有结果。

我想要做的很简单: 我有五个复选框,我希望用户能够使用。他们需要能够选择一个,全部或任何组合。由于某种原因,我还没弄清楚如何使这项工作:

I14  J14
All  Y
1    Y
2    Y
3    Y
4    Y
5    Y

以下是我到目前为止的情况 - 请有人帮我弄清楚如何做以下事情吗? 1.如果单击#1(或2,3,4,5)的复选框,则在单元格中写入一个值(当前包含“Y”)。 2.如果我取消选中#1(或2,3,4,5)的复选框,请清除单元格中的值(或写入不同的值)。 3.如果单击全部的复选框,请在该单元格中写入一个值并检查所有其他框。 4.如果我取消选中全部的复选框,请清除该单元格中的值并取消选中所有其他框。

Private Sub ChEmAll_Click()
    Range("J15").Value = "Y"
End Sub

Private Sub ChEmELM_Click()
    Range("J16").Value = "Y"
End Sub

Private Sub ChEmSFS_Click()
    Range("J17").Value = "Y"
End Sub

Private Sub ChEmRNJ_Click()
    Range("J18").Value = "Y"
End Sub

Private Sub ChEmATL_Click()
    Range("J19").Value = "Y"
End Sub

Private Sub ChEmAUR_Click()
    Range("J20").Value = "Y"
End Sub

1 个答案:

答案 0 :(得分:0)

我尝试在Sheet1上使用三个复选框(CBox1,CBox2和CBox3),在这张表的代码编辑器中这是我所拥有的:

Private Sub CBox1_Change() 'Check all checkboxes
    If CBox1.Value Then
        Me.Range("b1") = "Y"
    Else
        Me.Range("b1").ClearContents
    End If

    Dim CBox As OLEObject
    For Each CBox In Me.OLEObjects
        If InStr(LCase(CBox.progID), "checkbox") > 0 Then
            CBox.Object.Value = CBox1.Value
        End If
    Next CBox
End Sub

Private Sub CBox2_Change()
    If CBox1.Value Then
        Me.Range("b2") = "Y"
    Else
        Me.Range("b2").ClearContents
    End If
End Sub

Private Sub CBox3_Change()
    If CBox1.Value Then
        Me.Range("b3") = "Y"
    Else
        Me.Range("b3").ClearContents
    End If
End Sub

如果您的工作表中只有OleObjects复选框,则可以跳过勾选“If InStr(LCase(CBox.progID), "checkbox") > 0 Then