2013-09-25 66 views
0

我需要你的幫助。我想爲我的代碼添加一個「Do ... Loop Until」。Do .. Loop Until with multiple IFs

所有我想要做的是自動改變的範圍和執行從細胞O2所有邏輯測試,我的代碼的起點,直到電池O1700其中得到的"END"

價值因此,如果O2值=如果不是隻跳到下一個單元格並且一次又一次地執行AvtiveCell =「NA」直到「結束」,則「NA」然後執行所有IF。

我已經添加了這樣的東西,但它不能正常工作它只是找到第一個「NA」單元,然後停下來。

Range ("O2").Select 

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

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

您的幫助將不勝感激。 感謝

+0

你是指'NA'還是'#N/A'?如果是後者,我相信你需要檢查單元格的錯誤狀態。 –

回答

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 

如果可能的話,應避免選擇單元格,除非你想顯示選擇的變化給用戶。它減慢了過程並且通常使編碼複雜化。

+0

它給了我一個錯誤「Next Without For」? –

+0

對不起,我修正了 – nutsch

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
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. 正如有人已經提到的,你找誰使用Select#N/A代替NA
  3. 避免,因爲它會減慢你的代碼。它也可能降低可維護性。
+0

謝謝它的工作很好,是的,即時尋找NA值不是錯誤#N/A。 –