2014-09-18 106 views
0

我已經編寫了嵌套的For循環,即使條件滿足,也不會執行For循環的代碼。我試着評論最外面的For循環,但內循環也不起作用。 我在Excel工作2007Excel 2007中的VBA不會執行嵌套for循環

Sub CalcAll() 

Dim a As Integer 
a = 10 
Dim b As Integer 
b = 10 

For a = 10 To a = (Range("B" & Rows.Count).End(xlUp).Row) Step 1 

    For b = 10 To b = (Worksheets("DistanceLookupTable").Cells(2, Sheet1.Columns.Count).End(xlToLeft).Column) Step 1 

     If IsEmpty(Cells(a, i).Value) Then 
      Exit Sub 
     Else 
      'Lots of code reading values from the worksheet and printing 
      'calculated values to the worksheet 
     End If 
    Next b 
Next a 
End Sub 

感謝您的幫助

+0

你有'Cells(a,i)',但沒有'i'定義。應該是'Cells(a,b)'? – 2014-09-18 19:16:40

回答

2

你的循環應該寫成:

For a = 10 To XXX 

不是:

For a = 10 To a = XXX 
+0

這個伎倆,謝謝。 – Kate 2014-09-18 19:43:50

2

試試這個:

Dim a As Integer 
'a = 10 'Unnecessary to assign value here, as you assign the starting value in the For loop 
Dim b As Integer 
'b = 10 'Again, this line not necessary 

For a = 10 To Range("B" & Rows.Count).End(xlUp).Row Step 1 

    For b = 10 To Worksheets("DistanceLookupTable").Cells(2, Sheet1.Columns.Count).End(xlToLeft).Column Step 1 

     If IsEmpty(Cells(a, i).Value) Then '<- do you mean 'b' instead of 'i'? I don't see 'i' assigned anywhere... 
     Exit Sub 
     Else 
     'Lots of code reading values from the worksheet and printing 
     'calculated values to the worksheet 
     End If 
    Next b 
Next a 

而在不相關的說明中,您可能會考慮在第一個for循環中完全限定範圍(Worksheets("worksheetName").Range("B" & Rows.Count)...而不是Range("B" & Rows.Count)...)。現在,它將使用當前活動工作表的範圍。所以除非你的意圖是這樣,否則最好是明確的。

+0

For循環現在可以工作,謝謝。但是,當我把一個= 10到工作表(「DistanceLookupTable」)。(範圍(「B」和行數。)(結束(xlUp).Row)步驟1它突出顯示爲紅色,並說有語法錯誤 – Kate 2014-09-18 19:53:53

+0

那裏不應該是範圍部分的括號。您可以考慮將其分配給變量,而不是直接在for循環中對其進行硬編碼。就像'lastColumn = Worksheets(「DistanceLookupTable」)。Range(「B」&Rows.Count)...'等等。這樣你就可以通過代碼來檢查語句的評估結果。然後你的for循環將會是'For a = 10 to lastColumn'。 – 2014-09-18 20:15:09