从当前活动单元运行代码,不覆盖以前的单元格

我已经开发了下面的代码来select下一个空单元格,但它不会运行我的代码,其中检查列的其余部分。

当我运行代码时,它会覆盖我以前的工作。 我想要代码find下一个空单元格,并从那里运行,忽略了以前的单元格。 代码的下半部分在尝试select第一个空单元格之前工作。

Sub Outcome() Dim Action As String Dim Status As String Dim Module As String Dim Outcome As String Dim x As Integer Dim a As Integer Application.Goto Cells(Rows.Count, "J").End(xlUp).Offset(1), Scroll:=True For x = Active.Cell To 500 ---> (First blank cell to 500) Action = Cells(x, 5).Value Status = Cells(x, 8).Value Module = Cells(x, 9).Value Outcome = Cells(x, 10).Value If Action = "" Then Exit Sub If Action = " Page was incorrectly blocked" And Status = "NOT BLOCKED" And Module = "NOT BLOCKED" Then Outcome = "No Action" Else If Action = " Page was incorrectly blocked" And Status = "BLOCKED" And Module = "caravan" Then Outcome = "Check" Else If Action = " Page was incorrectly blocked" And Status = "BLOCKED" And Module = "Holiday" Then Outcome = "Refer to Nominum" Else If Action = " Page was incorrectly blocked" And Status = "" And Module = "" Then Outcome = "Check" Else If Action = " Page was incorrectly blocked (caravan)" And Status = "NOT BLOCKED" And Module = "NOT BLOCKED" Then Outcome = "No Action" Else If Action = " Page was incorrectly blocked (caravan)" And Status = "BLOCKED" And Module = "caravan" Then Outcome = "Check" Else If Action = " Page was incorrectly blocked (caravan)" And Status = "BLOCKED" And Module = "Holiday" Then Outcome = "Refer to Nominum" Else If Action = " Page was incorrectly blocked (caravan)" And Status = "" And Module = "" Then Outcome = "Check" Else If Action = " Page was incorrectly blocked (Malware)" And Status = "NOT BLOCKED" And Module = "NOT BLOCKED" Then Outcome = "No Action" Else If Action = " Page was incorrectly blocked (Malware)" And Status = "BLOCKED" And Module = "Holiday" Then Outcome = "Refer to Nominum" Else If Action = " Page was incorrectly blocked (Malware)" And Status = "BLOCKED" And Module = "caravan" Then Outcome = "Check" Else If Action = " Page was incorrectly blocked (Malware)" And Status = "" And Module = "" Then Outcome = "Check" Else If Action = " This page should be blocked." And Status = "NOT BLOCKED" And Module = "NOT BLOCKED" Then Outcome = "Check" Else If Action = " This page should be blocked." And Status = "BLOCKED" And Module = "caravan" Then Outcome = "No Action" Else If Action = " This page should be blocked." And Status = "BLOCKED" And Module = "Holiday" Then Outcome = "Refer to Nominum" Else If Action = " This page should be blocked." And Status = "" And Module = "" Then Outcome = "Check" Else Next x End Sub 

简单地For x = Active.Cell To 500根本不起作用… Active.Cell会认为Active是一个范围(但是你从来没有这样宣称过)。 要么这样做:

 For x = Selection.Row To Selection.Row + 500 

或者像下面这样运行它:

 Dim xx as Variant For each xx in Selection.Resize(500, 1).Cells 

那么xx将是单元本身。

还清理你的巨大IF块…它以一个Else结束,应该触发语法错误! (但它不…不幸)

编辑

对于你的4个If块:

 If Action = " Page was incorrectly blocked" Or Action = " Page was incorrectly blocked (caravan)" Or Action = " Page was incorrectly blocked (Malware)" Or Action = " This page should be blocked." Then If Status = "BLOCKED" And Module = "Holiday" Then Outcome = "Refer to Nominum" ElseIf Status = "" And Module = "" Then Outcome = "Check" ElseIf Status = "NOT BLOCKED" And Module = "NOT BLOCKED" Then If Action = " This page should be blocked." Then Outcome = "Check" Else Outcome = "No Action" ElseIf Status = "BLOCKED" And Module = "caravan" Then If Action = " This page should be blocked." Then Outcome = "No Action" Else Outcome = "Check" End If End If