VBA 中的 If 和 ElseIf 语句

If and ElseIf Statement in VBA

我正在为我的 word 文档制作 VBA 中的表格。我一边学习一边学习。我有一个组合框,您可以在其中 select 列表中的项目。基本上,如果项目 "Homestretch" 是 selected,我希望文档打印出 4 份,其他所有 selected 或输入到组合框中的内容打印出 3 份。

当我 select Homestretch 时,我可以完美地打印 4 份副本,但如果我 select 其他任何东西,它都不会打印。另请注意,这是在命令按钮单击功能下,我只希望在选中 ckbPrint 复选框时执行。这是下面的代码。谢谢

If Me.ckbPrint.Value = True Then
If cbxCarrier.Value = "Homestretch" Then
     ActiveDocument.PrintOut copies:=4
ElseIf cbxCarrier.Value <> "Homestretch" Then
ElseIf Me.ckbPrint.Value = True Then
     ActiveDocument.PrintOut copies:=3
End If
End If 

它应该是这样的

If Me.ckbPrint.Value = True Then
    If cbxCarrier.Value = "Homestretch" Then
         ActiveDocument.PrintOut copies:=4
    ElseIf cbxCarrier.Value <> "Homestretch" Then
         'put your inner else statement here. If none, then remove it
    End If 
ElseIf Me.ckbPrint.Value = False Then 'this else is connected with first if
 ActiveDocument.PrintOut copies:=3
End If

如果不是您想要的,只需更改语句即可,但 if 和 elseif 如何工作

您的代码应用了太多测试。您可以将其简化为以下内容:

Dim copies As Long

If Me.ckbPrint Then
    If cbxCarrier.Value = "Homestretch" Then
        copies = 4
    Else
        copies = 3
    End If
    ActiveDocument.PrintOut copies:=copies
End If

对于您只需要在分配两个值之一之间做出决定的简单 If ... Then 情况,IIf() 函数可以使您的代码更简单:

If Me.ckbPrint Then ActiveDocument.PrintOut _
     copies:=IIf(cbxCarrier.Value="Homestretch", 4, 3)

语法:IIf(test, if_test_true, if_test_false)