2016-12-27 115 views
0
Sub NewRefesh() 
    If Not Range("X2") = "COMPLETE" Or Range("X2") = "CANCELLED" Then 
     Range("X2").Select 
     ActiveCell.FormulaR1C1 = "=GetOrderStatus(RC[1])" 
    End If 
End Sub 

上述代码只为X2,但我想要做到X52。如果条件为for循环

(例如:在X3接着检查=完全”或范围( “X3”)= “取消”。然后 范围( “X3”。)选择 ActiveCell.FormulaR1C1 = “= GetOrderStatus(RC [1])”和做的动作,接下来X4等

+0

你尝试任何你来到这里的答案? –

回答

0

使用行/列编号

x是列号24

for i = 2 to 52 
If Not cells(i,24) = "COMPLETE" Or cells(i,24) = "CANCELLED" Then 
     Range(i,24).Select 
     Whatever you want done......... 
    End If 
Next i 
1

我想在您的文章你的意思是你的标准是:

  1. 未范围( “X2”)= “COMPLETE” >>也可以替换为范围( “X2”)<> “COMPLETE”
  2. 未范围( “X2”)= “取消” >>可以用范围( “X2”)<也换成> “取消”

注意:这是更好地从SelectActiveCell望而却步,转而使用引用Range秒。在你的代码的代码直接使用Range("X" & i).FormulaR1C1

代码

Option Explicit 

Sub NewRefesh() 

    Dim i As Long 

    ' simple For loop, you can modify to find last row with data instead of 52 
    For i = 2 To 52 
     If (Not Range("X" & i).Value = "COMPLETE") And (Not Range("X" & i).Value = "CANCELLED") Then 
      Range("X" & i).FormulaR1C1 = "=GetOrderStatus(RC[1])" 
     End If 
    Next i 


End Sub 
+0

我试过这个。谢谢。它工作正常。 – vaasusk

+0

@vaasusk请标记为答案(通过点击我的回答 –

+0

@vaasusk旁边的v,所以你知道如何标记为“答案” - 你需要点击我帖子旁边的小** V **。如果你想要在这里得到帮助,你应该尝试给出一些积极的反馈 –