Excel VBA IF语句 – 语句不正确执行

我需要一个代码,如在列BM中有“Good PG”以下条件应该运行

`Dim val As Range Dim myrange As range Dim ws_zfi As Worksheet Set ws_zfi = ActiveWorkbook.Sheets("ZFIGLABACUS") lastrow_d = ws_zfi.Cells(Rows.Count, 2).End(xlUp).Row set myrange = ws_zfi.Range("BM3:BM" & lastrow_d) For Each val In myrange For Each val In myrange If val.Value = "Good PG" Then ws_zfi.Range("BO3:BO" & lastrow_d).FormulaR1C1 = "=VLOOKUP(RC[-23],'ABACUS BU VALIDATION'!C5:C6,2,0)" Else If val.Value = "To check" Then ws_zfi.Range("BO3:BO" & lastrow_d).FormulaR1C1 = "=VLOOKUP(RC[2],'ABACUS BU VALIDATION'!C3:C6,4,0)" End If End If Next val 

但是在运行代码后,如果有“没有好的PG”,那么也只有一个条件正在运行。如果它不是一个“好的PG”第二个条件应该运行,但是列BM中的所有行只有第一个条件正在运行。 我没有得到我错误的地方。

代码中有几个问题:

  • Dim myrange As String应该是Dim myrange As Range
  • myrange = ws_zfi.Range("BM3:BM100000")Set myrange = ws_zfi.Range("BM3:BM100000")

另外,可能

  • ws_zfi.Range("BO3:BO").FormulaR1C1应该是ws_zfi.Range("BO3:BO" & lastrow_d).FormulaR1C1
  • myrange = ws_zfi.Range("BM3:BM100000")应该是myrange = ws_zfi.Range("BM3:BM" & lastrow_d)

VBA中的if条件是这样的:

 if(Condition(s)) then 'Code Block Here End If