2016-04-13 63 views
-2
Sub Correction() 

Dim i As Integer 

For Sex = 1 To 2 
For Age = 0 To 100 

Range("Test1") = Sex 
Range("Test2") = Age 

For i = 4 To 145 

Sheets("Input").Cells(i, 10).Copy 
Range("Amount").PasteSpecial Paste:=xlValues 

If Range("Negative") = 0 Then 

Sheets("Input").Cells(i, 13).Copy 
Sheets("Input").Cells(Age + 4, 14).PasteSpecial Paste:=xlValues 

End If 


Next 
Next 
Next 


End Sub 

當我嘗試運行宏,對於Sex = 1Age = 0,假設宏後發現i = 10使"Negative" = 0,宏仍繼續到下一個我。但是我想讓宏在找到特定年齡的"Negative" = 0後繼續下一個Age。循環VBA擅長

請好心幫我解決這個宏

+0

請提供適當的背景,並具體說明你的問題。沒有人會有興趣瞭解您的代碼,爲您提供解決方案。按照此鏈接如何問一個好問題http://stackoverflow.com/help/how-to-ask – Prasanna

+0

你想達到什麼?我目前無法制作頭部或尾部的代碼。 –

+0

解釋這個宏的目標有點複雜,我需要分享電子表格。 基本上在編碼中有3個For語句,但是如果Range(「Negative」)= 0發生,我想退出這個「For i = 4 To 145」,那麼繼續下一個For「For Age = 0到100「。 爲了簡單起見,我有3個語句,我想退出1語句,如果我的「IF」語句被滿足 –

回答

1

編輯 OP的澄清

Option Explicit 

Sub Correction() 

Dim i As Integer, Sex As Integer, Age As Integer 

If Cells(Age + 4, 12) > 0 Then 

    For Sex = 1 To 2 
     For Age = 0 To 100 

      Range("Test1") = Sex 
      Range("Test2") = Age 

      For i = 4 To 145 

       Sheets("Input").Cells(i, 10).Copy 
       Range("Amount").PasteSpecial Paste:=xlValues 

       If Range("Negative") = 0 Then 

        Sheets("Input").Cells(i, 13).Copy 
        Sheets("Input").Cells(Age + 4, 14).PasteSpecial Paste:=xlValues 

        Exit For '<== this will have you exit the current for loop 

       End If 

      Next i 

     Next Age 
    Nextsex 

End If 

End Sub 

我建議完全限定使用範圍之後。由於,因爲它現在是:

  • Cells(Age + 4, 12)Range("Test1")Range("Test2")Range("Amount")Range("Negative")都指的是當前的活動片,這可能不是所感興趣

  • Sheets("Input").Cells(i, 10)之一,Sheets("Input").Cells(Age + 4, 14)所指到屬於當前活動工作簿的名爲「輸入」的工作表的單元格

也許上面的內容實際上爲你工作,但它不會是一個強大的,也不容易維護的解決方案

+0

真的非常感謝,這可以解決我的問題,之前我把退出後爲 –

+0

如果我如果單元格(Age,12)= 0,則需要創建另一個條件來運行'For I = 4 to 465',然後在那裏我需要添加 'If Cells(Age,12).value = 0 Then' and ' End If' –

+0

你的意思是'如果範圍(「負值」)= 0和單元格(年齡,15)= 0那麼......'。否則添加更多信息。最後:您可能想要對任何您認爲有用的答案進行投票,並將其標記爲已接受完成原始問題的答案。謝謝 – user3598756