VBA,For,For Each用于整个范围而不是每一行

时间:2018-09-10 20:15:21

标签: excel vba excel-vba

我正在尝试在每一行而不是整个行中放置一个值。目前,当只有OK应用于的一个单元格应该为“失败”时,我的数据在整个范围内都显示为“失败”

OK = primaryDoc.InsertPages(insertPoint, sourceDoc, startPage, endPage - startPage, False)

OK将返回true或false。

尝试了For循环

 For row_num = 8 To max_row
        If OK = True Then
            Range("O8:O43").value = "Completed"
        Else
            Range("O8:O43").value = "Failed"
        End If
        Next row_num

尝试了For each循环

Set a = Range("O3:O43")

For Each cell In a.Rows
    If OK = True Then
        a.value = "Completed"
    Else
        a.value = "Failed"
    End If
Next

当前结果:

enter image description here

预期

enter image description here

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:4)

在第一个代码示例中,您始终将值应用于所有单元格。不要那样做仅将值应用于当前单元格,即row_num行中的那个。当然,它也将取决于OK的当前值。您的代码似乎并没有在循环的每次迭代中更改OK的值,因此不清楚它所指的是什么。

 For row_num = 8 To max_row
        If OK = True Then
            Range("O" & row_num).value = "Completed"
        Else
            Range("O" & row_num).value = "Failed"
        End If
  Next row_num