一点背景:到目前为止,我创建了一个带有复选框的用户表单,每个复选框最初运行单独的宏,然后在未选中时运行相同的宏以返回“正常”状态。这是使用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
提前谢谢!
答案 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