【发布时间】:2017-09-26 08:10:01
【问题描述】:
我不断收到“类型不匹配错误”或其他一些小错误,例如“如果没有阻止”。但是,当我修复一个时,另一个会弹出。不确定此代码中的问题出在哪里。这很简单,获取单元格值,然后根据值进行分类。
Private Sub CommandButton2_Click()
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Set sh1 = ActiveWorkbook.Sheets("Completed Questionnaire")
Set sh2 = ActiveWorkbook.Sheets("Classifier")
If sh1.Range("C10") = "Yes" Or sh1.Range("C11") = "Yes" Then
If sh1.Range("C19:C20") = "Yes" Or sh1.Range("C17") = "Yes" Then
sh2.Unprotect Password:="xxx"
sh2.Range("D4") = "PS1"
sh2.Protect Password:="xxx"
End If
ElseIf sh1.Range("C10") = "Yes" Or sh1.Range("C11") = "Yes" And _
sh1.Range("C14") = "Yes" Or _
sh1.Range("C15") = "Yes" Or _
sh1.Range("C16") = "Yes" Or _
sh1.Range("C18") = "Yes" Then
sh2.Unprotect Password:="xxx"
sh2.Range("D4") = "PS2"
sh2.Protect Password:="xxx"
ElseIf sh1.Range("C12") = "Yes" And sh1.Range("C21") = "Yes" Then
If sh1.Range("C10:C11") = "No" Then
sh2.Unprotect Password:="xxx"
sh2.Range("D4") = "PS3"
sh2.Protect Password:="xxx"
End If
ElseIf sh1.Range("C13") = "Vendor Only" And sh1.Range("C10:C11") = "Yes"
Then _
If ("C14") = "Yes" Or _
sh1.Range("C15") = "Yes" Or _
sh1.Range("C16") = "Yes" Or _
sh1.Range("C17") = "Yes" Or _
sh1.Range("C18") = "Yes" Or _
sh1.Range("C19") = "Yes" Or _
sh1.Range("C20") = "Yes" Then _
sh2.Unprotect Password:="xxx"
sh2.Range("D4") = "Payment Process"
sh2.Protect Password:="xxx"
End If
ElseIf sh1.Range("C10:C21") = "No" Then
sh2.Unprotect Password:="xxx"
sh2.Range("D4") = "Non-Payment"
sh2.Protect Password:="xxx"
Else: sh2.Unprotect Password:="xxx"
sh2.Range("D4") = "Needs Review"
sh2.Protect Password:="xxx"
End If
Sheets("Classifier").Select
End Sub
【问题讨论】:
-
查找有错误的单元格
-
另外,您在此处有一个单独的行上的
Then- SO 与您在 VBA 中所拥有的一样 完全 吗?另外,尽量不要使用Else: ...,而把那部分也放在单独的一行上。
标签: vba excel if-statement