我在代码的以下部分中得到了编译错误"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比较可以与单个命令位于同一行,但不能与您执行的命令相同。每个条件下的两个命令应该更像以下内容。
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语句进行尝试。
或者,您可以将嵌套的If替换为Select Case,甚至将Instr()替换为Like运算符:
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