使用IF&与Userform上的复选框的AND语句

时间:2016-06-27 16:07:44

标签: excel vba checkbox macros userform

一点背景:到目前为止,我创建了一个带有复选框的用户表单,每个复选框最初运行单独的宏,然后在未选中时运行相同的宏以返回“正常”状态。这是使用IF,Else声明完成的。

我的问题是如何将If语句与AND语句结合使用,这样当/如果选中两个框,它们就会运行不同的代码或宏。

我对VBA和编码仍然很新,但对我来说这似乎是一个相当简单的想法,因为我得到了IF else语句。但由于某些原因,我一直在尝试的代码没有工作,我没有收到任何错误,当我检查两个盒子时,它只是没有做任何事情。

我一直在尝试的代码是:

Private Sub cbXray_Click()

If cbXray.Value = True And cbSCH40.Value = True Then
 ActiveCell.FormulaR1C1 = _
        "=((RC[-6]*'Sched 40 Table Data'!R[1]C[1])+(RC[-5]*'Sched 40 Table Data'!R[1]C[-10])+(RC[-4]*'Sched 40 Table Data'!R[1]C[-9])+(RC[-3]*'Sched 40 Table Data'!R[1]C[-8])+(RC[-2]*'Sched 40 Table Data'!R[1]C[-7])+(RC[-1]*'Sched 40 Table Data'!R[1]C[-6]))"
Range("P7").Select
Selection.AutoFill Destination:=Range("P7:P30"), Type:=xlFillDefault
Range("P7:P30").Select

Else

Range("P7").Select
ActiveCell.FormulaR1C1 = _
    "=((RC[-6]*'Sched 40 Table Data'!R[1]C[-11])+(RC[-5]*'Sched 40 Table Data'!R[1]C[-10])+(RC[-4]*'Sched 40 Table Data'!R[1]C[-9])+(RC[-3]*'Sched 40 Table Data'!R[1]C[-8])+(RC[-2]*'Sched 40 Table Data'!R[1]C[-7])+(RC[-1]*'Sched 40 Table Data'!R[1]C[-6]))"
Range("P7").Select
Selection.AutoFill Destination:=Range("P7:P30"), Type:=xlFillDefault
Range("P7:P30").Select
End If


End Sub

提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试按如下方式设置代码:

Private Sub cbSCH40_Click()
    cbs_Check 
End Sub

Private Sub cbXray_Click()
    cbs_Check
End Sub

Private Sub cbs_Check()
    With Me
        If .cbXray And .cbSCH40 Then
            'code to run when both checkboxes are checked
        ElseIf .cbXray Then
            'code to run when only cbXray is checked
        ElseIf .cbSCH40 Then
            'code to run when only cbSCH40 is checked
        Else
            'code to run when neither cbXray nor cbSCH40 is checked
        End If
    End With
End Sub