这段代码应该做的是,如果你在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
答案 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的例子应该没问题。