Excel - 根据单元格内容设置Userform复选框的值

时间:2016-03-17 11:20:52

标签: excel vba checkbox userform

我正在开发一个用户表单,其中一部分包含三个指向世界不同部分的复选框。根据组合,这些将文本值输入到单元格C9中。

我想让复选框反映用户返回用户窗体时单元格中的内容。我已经能够为userform中的每个其他项目(选项按钮,文本框,组合框)执行此操作,但我的复选框根本没有响应,当用户窗体出现时,它们只是未选中,无论C9的值如何。

以下代码位于userform_intialize模块中。有什么想法吗?

If wsM.Range("C9").Value = "EU-5" Then
        NABox.Value = False And EUBox.Value = True And RoWBox.Value = False
    ElseIf wsM.Range("C9").Value = "EU-5 & RoW" Then
        NABox.Value = False And EUBox.Value = True And RoWBox.Value = True
    ElseIf Sheets("Menu").Range("C9").Value = "NA & EU-5" Then
        NABox.Value = True And EUBox.Value = True And RoWBox.Value = False
    ElseIf wsM.Range("C9").Value = "North America" Then
        NABox.Value = True And EUBox.Value = False And RoWBox.Value = False
    ElseIf wsM.Range("C9").Value = "NA & RoW" Then
        NABox.Value = True And EUBox.Value = False And RoWBox.Value = True
    ElseIf wsM.Range("C9").Value = "Rest of World" Then
        NABox.Value = False And EUBox.Value = False And RoWBox.Value = True
    Else: NABox.Value = False And EUBox.Value = False And RoWBox.Value = False
End If

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

Me.关键字放在复选框名称前面 也可以更好地使用SELECT CASE语句而不是ElseIf

NABox.Value = False And EUBox.Value = True And RoWBox.Value = False需要三个独立的命令。在单独的行上,或者使用:分割(以下代码中的两个示例)。

Private Sub UserForm_Initialize()

    With Me
        Select Case wsm.Range("C9").Value
            Case "EU-5"
                NABox.Value = False
                EUBox.Value = True
                RoWBox.Value = False
            Case "EU-5 & RoW"
                NABox.Value = False : EUBox.Value = True
                RoWBox.Value = False
            Case "NA & EU-5"

            Case Else

        End Select
    End With

End Sub

编辑 - 我认为您不需要显式声明False复选框 - 默认情况下,当表单打开时它们为False。