Excel VBA IF语句 - 语句未正确执行

时间:2017-08-28 05:50:59

标签: excel vba excel-vba

我需要一个代码,如果在列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

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

2 个答案:

答案 0 :(得分:0)

代码中有几个问题:

  • 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)

答案 1 :(得分:0)

VBA中的if条件是这样的:

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