如果和VBA中的ElseIf声明

时间:2016-11-21 03:08:06

标签: vba if-statement basic

我正在使用VBA中的表单来处理我的单词文档。随着我的进步,我正在学习。我有一个组合框,您可以从列表中选择一个项目。基本上,如果选择“Homestretch”项目,我希望文档打印出4份副本,并且对于在组合框中选择或输入的所有其他内容,我希望打印3份。

当我选择Homestretch时,我完全打印出4份副本,但如果我选择其他任何内容则不会打印。另请注意,这是在命令按钮单击功能下,我只希望在执行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 

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

看起来应该是这样的

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如何工作

答案 2 :(得分:0)

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

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

语法:IIf(test, if_test_true, if_test_false)