我正在使用按钮命令,但使用elseif语句无法查看此代码的错误

时间:2015-01-14 00:22:09

标签: excel excel-vba vba

这段代码应该做的是,如果你在cell 2,2中有一个数字,并且它在一系列if语句之间,它会在cell 3,3中给你一个数字。问题是它只适用于前3个语句。第四个不起作用。它给你1号而不是2号。

*注意:该程序使用更多语句,但这只是为了表明问题出在第三个语句之后,对不起我的英语。

Cell 3,6= 5

Cell 3,7= 10

'MEC
If sheet1.Cells(2, 2) = Empty Then
            sheet3.Cells(3, 3) = ""
            sheet4.Cells(3, 3) = 0

'MEC limited
ElseIf sheet2.Cells(2, 2) = 1 Then
    sheet3.Cells(3, 3) = 0

'MEC aceptable
ElseIf sheet1.Cells(2, 2) > 1 < sheet.Cells(3, 6) Then
    sheet3.Cells(3, 3) = 1

'MEC Good
ElseIf sheet1.Cells(2, 2) > 5 <= sheet2.Cells(3, 7) Then
    sheet3.Cells(3, 3) = 2                 
End If

End Sub

2 个答案:

答案 0 :(得分:2)

你的表格中有一个拼写错误的MEC Aceptable。的 sheet.Cells 即可。从上下文来看,它看起来应该是Sheet2.Cells

ElseIf sheet1.Cells(2, 2) > 1 < sheet.Cells(3, 6) Then

除此之外,请尝试使用Select Case。您可以使用IF语句,但是当您有许多Select Case s

时,ElseIf会很方便
Select Case (Sheet1.Cells(2, 2).Value)

    Case Is = ""
        Sheet3.Cells(3, 3) = ""
        Sheet4.Cells(3, 3) = 0
    Case Is = 1
        Sheet3.Cells(3, 3) = 0
    Case Is <= Sheet2.Cells(3, 6) 'There was typo in your orig code.. Sheet2?
        Sheet3.Cells(3, 3) = 1
    Case Is <= Sheet2.Cells(3, 7)
        Sheet3.Cells(3, 3) = 2

End Select

答案 1 :(得分:0)

这里似乎有几种语言混淆了。编写第三和第四次比较的VBA方法更接近,

If Sheet1.Cells(2, 2) = Empty Then
            Sheet3.Cells(3, 3) = ""
            Sheet4.Cells(3, 3) = 0
'MEC limited
ElseIf Sheet2.Cells(2, 2) = 1 Then
        Sheet3.Cells(3, 3) = 0
'MEC aceptable
ElseIf Sheet1.Cells(2, 2) > 1 And Sheet1.Cells(2, 2) < Sheet2.Cells(3, 6) Then
        Sheet3.Cells(3, 3) = 1
'MEC Good
ElseIf Sheet1.Cells(2, 2) > 5 And Sheet1.Cells(2, 2) <= Sheet2.Cells(3, 7) Then
        Sheet3.Cells(3, 3) = 2
End If

这些陈述中仍有一些优先权。如果B2为6则大于1且大于5.取决于F3和G3中的内容,可能永远不会达到第四个条件。鉴于你的F3为5的例子应该没​​问题。