0

我需要你的帮助。我想在我的代码中添加一个“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")

您的帮助将不胜感激。谢谢

4

3 回答 3

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"
于 2013-09-25T23:15:09.270 回答
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"

附言

  1. 您可以缩进代码以增强可读性。
  2. 正如有人已经提到的那样,您是否正在寻找#N/A而不是NA
  3. 避免使用Select,因为它会减慢您的代码。它还可能降低可维护性。
于 2013-09-26T01:28:27.670 回答
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

如果可能,请避免选择单元格,除非您想向用户显示选择更改。它减慢了进程并且通常使编码复杂化。

于 2013-09-25T23:13:52.373 回答