做..循环直到多个IF

时间:2013-09-25 23:09:11

标签: excel vba loops excel-vba

我需要你的帮助。我想在我的代码中添加一个`Do ... Loop Until'。

我想要做的就是自动更改范围并从单元格O2执行所有逻辑测试作为我的代码的起点,直到单元格O1700获得"END"的值

因此,如果O2 =“NA”的值,则执行所有IF,如果不是仅跳到下一个单元格并再次执行AvtiveCell =“NA”并再次直到“END”。

我添加了类似的东西,但它不能正常工作它只找到第一个“NA”单元格然后停止。

    Range ("O2").Select

    IF (ActiveCell = "NA") THEN
    'MY CODE

    ELSE
    DO
    ActiveCell.Offset(1, 0).Select
    Loop Until (ActiveCell = "END")

非常感谢您的帮助。 感谢

3 个答案:

答案 0 :(得分:1)

If必须在里面循环:

range("O2").Select
do
    if ActiveCell = "NA" then
        ' Your code goes here
    else
        ' If you want to do something if the cell is not "NA"
    end if
    ActiveCell.Offset(1,0).Select
loop until ActiveCell = "End"

答案 1 :(得分:1)

Dim counter As Integer
counter = 2
Do
    If Range("O" & counter) = "NA" Then
        'Your code
    End If
    counter = counter + 1
Loop Until Range("O" & counter) = "END"

P.S。

  1. 您可以缩进代码以增强可读性。
  2. 正如有人已经提到的那样,您是在寻找#N/A而不是NA
  3. 避免使用Select,因为它会降低您的代码速度。它还可能降低可维护性。

答案 2 :(得分:0)

尝试

Dim lLoop as long

lloop=2

do while cells(lloop,1)<>"END"
if cells(lloop,1)="NA" then
'my code
end if
lloop=lloop+1
loop

如果可能,请避免选择单元格,除非您要向用户显示选择更改。它会减慢进程并使编码变得复杂。