在用户表单上使用带有复选框的 IF & AND 语句
Using IF & AND statements with Checkboxes on a Userform
一点背景知识:到目前为止,我已经创建了一个带有复选框的用户窗体,每个 运行 最初将宏分开,然后在未选中时 运行 与 return 相同的宏到 "normal" 状态。这是使用 IF, Else 语句完成的。
我的问题是如何将 If 语句与 AND 语句结合起来,以便 when/if 选中两个框,它们 运行 不同的代码或宏。
我对 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
提前致谢!
尝试按如下方式设置您的代码:
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
一点背景知识:到目前为止,我已经创建了一个带有复选框的用户窗体,每个 运行 最初将宏分开,然后在未选中时 运行 与 return 相同的宏到 "normal" 状态。这是使用 IF, Else 语句完成的。
我的问题是如何将 If 语句与 AND 语句结合起来,以便 when/if 选中两个框,它们 运行 不同的代码或宏。
我对 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
提前致谢!
尝试按如下方式设置您的代码:
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