首页 > 解决方案 > 为什么我在以下代码中不断收到“Else without If”错误?

问题描述

我希望有人可以帮助我使用以下代码。我不断收到“Else without If”控制错误,我不明白为什么?

If Sheets("Travel Expense Voucher").Range("D5") = 2 And Sheets("Travel Expense Voucher").Range("Meals") <> "" Then Sheets("Expense Code Processing").Range("C2") = "62495"
    ElseIf Sheets("Travel Expense Voucher").Range("D5") = 1 And Sheets("Travel Expense Voucher").Range("Meals") <> "" And cmbOVNRTN = ("Return") And cmbInOutState = ("In-State") Then Sheets("Expense Code Processing").Range("C2") = "62407"
    ElseIf Sheets("Travel Expense Voucher").Range("D5") = 1 And Sheets("Travel Expense Voucher").Range("Meals") <> "" And cmbOVNRTN = ("Overnight") And cmbInOutState = ("In-State") Then Sheets("Expense Code Processing").Range("C2") = "62410"
    ElseIf Sheets("Travel Expense Voucher").Range("D5") = 1 And Sheets("Travel Expense Voucher").Range("Meals") <> "" And cmbOVNRTN = ("Return") And cmbInOutState = ("Out-of-State") Then Sheets("Expense Code Processing").Range("C2") = "62430"
    ElseIf Sheets("Travel Expense Voucher").Range("D5") = 1 And Sheets("Travel Expense Voucher").Range("Meals") <> "" And cmbOVNRTN = ("Overnight") And cmbInOutState = ("Out-of-State") Then Sheets("Expense Code Processing").Range("C2") = "62417"
End If

标签: excelvbauserform

解决方案


If语句需要缩进。

此外,您可以使用变量和With语句使其更清晰。我还添加了一个BooleanElseIf缩短一点:

Sub t()
Dim ws As Worksheet, destWS As Worksheet
Set ws = Sheets("Travel Expense Voucher")
Set destWS = Sheets("Expense Code Processing")
Dim oneMeal As Boolean
oneMeal = False
With ws
    If .Range("D5") = 1 And .Range("Meals") <> "" Then oneMeal = True
    If .Range("D5") = 2 And .Range("Meals") <> "" Then
        destWS.Range("C2") = "62495"
    ElseIf oneMeal And cmbOVNRTN = ("Return") And cmbInOutState = ("In-State") Then destWS.Range("C2") = "62407"
    ElseIf oneMeal And cmbOVNRTN = ("Overnight") And cmbInOutState = ("In-State") Then destWS.Range("C2") = "62410"
    ElseIf oneMeal And cmbOVNRTN = ("Return") And cmbInOutState = ("Out-of-State") Then destWS.Range("C2") = "62430"
    ElseIf oneMeal And cmbOVNRTN = ("Overnight") And cmbInOutState = ("Out-of-State") Then destWS.Range("C2") = "62417"
    End If
End With
End Sub

推荐阅读