Vba 做使用多个IFs循环直到

Vba 做使用多个IFs循环直到,vba,loops,excel,Vba,Loops,Excel,我需要你的帮助。我想加一个“Do…”。。。循环到“我的代码” 我所要做的就是自动更改范围,并从单元格O2开始执行所有逻辑测试,作为我代码的起点,直到单元格O1700获得值“END” 因此,如果O2=“NA”的值为0,则执行所有的IFs,如果不只是跳到下一个单元格并反复执行AvtiveCell=“NA”,直到“结束” 我添加了类似的东西,但它不能正常工作,它只是找到第一个“NA”单元,然后停止 Range ("O2").Select IF (ActiveCell = "NA")

我需要你的帮助。我想加一个“Do…”。。。循环到“我的代码”

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

因此,如果O2=“NA”的值为0,则执行所有的IFs,如果不只是跳到下一个单元格并反复执行AvtiveCell=“NA”,直到“结束”

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

    Range ("O2").Select

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

    ELSE
    DO
    ActiveCell.Offset(1, 0).Select
    Loop Until (ActiveCell = "END")
非常感谢你的帮助。 谢谢

试试看

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
Dim lLoop尽可能长
lloop=2
do while单元格(lloop,1)“结束”
如果单元格(lloop,1)=“NA”,则
“我的代码
如果结束
lloop=lloop+1
环

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

如果
必须在循环内:

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"
附言

  • 您可以缩进代码以增强可读性
  • 正如有人已经提到的,您是在寻找
    #N/A
    而不是
    NA
  • 避免使用
    Select
    ,因为它会减慢代码的速度。它还可能降低可维护性
    你的意思是
    NA
    还是
    #N/A
    ?如果是后者,我相信您需要检查单元格的错误状态。谢谢,它工作得很好,是的,我在寻找NA值,而不是错误#N/A。
    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"