为什么第二个条件覆盖了我的excel VBA代码中的If / Then语句中的第一个条件?

时间:2017-01-09 03:10:35

标签: excel vba excel-vba

For Each循环中的我的If语句不起作用。当满足ElseIf条件(消息框“2”)时,即使满足第一个条件(消息框“1”),也总是出现“2”并且该代码运行。当我在ElseIf(“2”)之后删除代码时,出现“1”并且代码运行。本质上,第二个条件似乎覆盖了第一个条件的代码。我知道第二个条件更为通用,但它并不能解释为什么第一个条件被跳过,即使它肯定是满足的(当我删除第二个条件时证明)。有关为什么第二个条件接管的任何想法?

For Each curr In Range("A2:Z10")
        If InStr(1, curr.Value, "Protein name", vbTextCompare) > 0 Or InStr(1, curr.Value, "description", vbTextCompare) > 0 Then
            MsgBox ("1")
            Range(curr.Offset(1), Cells(Rows.Count, curr.Column).End(xlUp)).Copy Destination:=Workbooks("ExtractedColumns").Sheets("Sheet1").Cells(Rows.Count, "D").End(xlUp).Offset(1, 0)
            Exit For
        ElseIf InStr(1, curr.Value, "protein", vbTextCompare) > 0 Then
            MsgBox ("2")
            Range(curr.Offset(1), Cells(Rows.Count, curr.Column).End(xlUp)).Copy Destination:=Workbooks("ExtractedColumns").Sheets("Sheet1").Cells(Rows.Count, "D").End(xlUp).Offset(1, 0)
            Exit For
        End If
    Next

0 个答案:

没有答案