接下来是VBA错误,但每个都没有

时间:2016-01-28 08:08:53

标签: vba foreach

您好,我在VBA中运行此例程时发现错误。

Sub interest()
    Dim newRange As Range
    Dim rng As Range
    Dim cel As Range
    Dim ws As Worksheet

    Range("D9").Select
    Range(ActiveCell, ActiveCell.End(xlDown)).Select

    For Each cel In rng.Cells
     If cell.Value = "Cr" Then
     cell.Offset(0, -1).Value = cell.Offset(0, -1).Value
     Else
     cell.Offset(0, -1).Value = cell.Offset(0, -1).Value * (-1)
    Next

End Sub

3 个答案:

答案 0 :(得分:3)

您在End If

之前忘记了Next cel

答案 1 :(得分:2)

您没有将任何内容归因于rng!您只选择了某些范围的电子表格。 代码可以修改如下:

...
    Range("D9").Select
    Range(ActiveCell, ActiveCell.End(xlDown)).Select
    Set rng = Selection
...

答案 2 :(得分:0)

您收到编译错误,因为您没有使用 If 关闭End If - 阻止(请参阅iDevlop的answer)。 在VBA中,您需要编写If,如下所示:

If cell.Value = "Cr" Then
    cell.Offset(0, -1).Value = cell.Offset(0, -1).Value
Else
    cell.Offset(0, -1).Value = cell.Offset(0, -1).Value * (-1)
End If

只有这样,您才能使用For完成Next - 循环。

PS:正如Ehsan在his answer中提到的那样,您应该为rng指定一些值,否则您将遇到rng.Cells处的下一个错误。