excel - 为什么我在以下代码中不断收到“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
解决方案
If
语句需要缩进。
此外,您可以使用变量和With
语句使其更清晰。我还添加了一个Boolean
来ElseIf
缩短一点:
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
推荐阅读
- flutter - 上传类别时提供程序抖动错误:无法干扰类型参数“T”
- r - 将计数按钮添加到与 updateNumericInput 交互的闪亮应用程序
- python - XPath SyntaxError:无效谓词
- reactjs - 公共目录未部署在 AWS Amplify 上
- reactjs - 为什么它获取正确的行和其他消息
- c - C - 打印整个数组,每隔三个元素分隔一次
- javascript - 该命令仅在我不放 args 时才响应,但当我放它时它什么也不做
- mdx - 按度量的小计过滤
- excel - 复杂的 Excel 数据提取/转换与 Power BI 的集成
- javascript - ClearRect 正在删除画布上的所有内容