级联如果陈述不起作用

我得到编译错误“Else without If”在我的代码的以下部分。 有什么问题,我该如何解决?

If InStr(1, Worksheets("Raw data").Cells(i, 3), "1M") Then Call RowCopyPaste("AS-001", i, counter1M) counter1M = counter1M + 1 ElseIf InStr(1, Worksheets("Raw data").Cells(i, 3), "2M") Then Call RowCopyPaste("AS-001", i, counter2M) counter2M = counter2M + 1 ElseIf InStr(1, Worksheets("Raw data").Cells(i, 3), "3M") Then Call RowCopyPaste("AS-001", i, counter3M) counter3M = counter3M + 1 End If 

如果比较可以像单一命令一样生活在同一条线上,但不像你所做的那样。 每个条件的两个命令应该更像下面的内容。

 If InStr(1, Worksheets("Raw data").Cells(i, 3), "1M") Then Call RowCopyPaste("AS-001", i, counter1M) counter1M = counter1M + 1 ElseIf InStr(1, Worksheets("Raw data").Cells(i, 3), "2M") Then Call RowCopyPaste("AS-001", i, counter2M) counter2M = counter2M + 1 ElseIf InStr(1, Worksheets("Raw data").Cells(i, 3), "3M") Then Call RowCopyPaste("AS-001", i, counter3M) counter3M = counter3M + 1 End If 

像下面这样的东西可以自己生活,但不能和其他的ElseIf命令一起生活。

 If InStr(1, Worksheets("Raw data").Cells(i, 3), "1M") Then Call RowCopyPaste("AS-001", i, counter1M) 

如果您还有其他条件可以覆盖,您可能需要将其作为Select Case语句来使用。

或者,您可以使用Like运算符replace嵌套的If与Select Case ,甚至Instr()

  Select Case True Case Worksheets("RawData").Cells(1, 1) Like "*1M*" Call RowCopyPaste("AS-001", i, counter1M) counter1M = counter1M + 1 Case Worksheets("RawData").Cells(1, 1) Like "*2M*" Call RowCopyPaste("AS-001", i, counter2M) counter2M = counter2M + 1 Case Worksheets("RawData").Cells(1, 1) Like "*3M*" Call RowCopyPaste("AS-001", i, counter3M) counter3M = counter3M + 1 Case Else '... End Select