2017-05-15 210 views
-1

我有以下宏:代码在for循环中不执行

Sub CalculateCQ() 
    'Part I: copy sample names 
    Dim SourceExcel As String, CQVals(1 To 8) As Single, RowNum As Integer, i As Integer, j As Integer 
    SourceExcel = Application.GetOpenFilename() 

    Workbooks.Open (SourceExcel) 
    Worksheets("Samples").Activate 

    Range("B2:B13").Copy 
    Windows("testbook.xlsx").Activate 
    Range("A3").PasteSpecial xlPasteValues 

    'Part II: copy CQ IR values 
    For i = 1 To i = 12 Step 1 
     Windows(SourceExcel).Activate 
     Worksheets("CQ").Activate 

     MsgBox "Running thought sample" 
     For j = 1 To j = 8 Step 1 
      RowNum = 2 + 25 * (i - 1) + 3 * (j - 1) 

      If Cells(RowNum, 5).Value = "inf" Or Cells(RowNum, 5).Value = "N/A" Then 
       CQVals(j) = 10000.1 
      Else 
       CQVals(j) = Val(Cells(RowNum, 5).Value) 
      End If 
      MsgBox CQVals(j) 
     Next j 

     Windows("testbook.xlsx").Activate 
     'Cells((i + 2), 2).Value = Application.WorksheetFunction.Average(CQVals) 
     Cells((i + 2), 2).Value = "Test" 
    Next i 
End Sub 

第一部分作品为expacted,但第二部分似乎并没有在所有执行。当试图用MsgBox缩小问题的范围时,我发现第一个for循环内没有任何内容(For i = 1 To i = 12 Step 1)没有得到执行。

  • "testbook.xlsx"是宏工作簿
+1

我正在标记关闭这个问题,因为它是一个错字(语法错误)。 – cybermonkey

+0

请做。现在它工作正常。 –

+2

不幸的是,VBA编辑器接受这是有效的语法。后台发生的事情是,'i = 12'评估为'false'(当时i为0),false表示为0(true = -1),因此for循环从'i = 1到0',因此从未执行。 – FunThomas

回答

1

的正确语法为for循环是

For i = 1 To 12 Step 1 
For j = 1 To 8 Step 1 

注意Step 1是默认的,所以它是没有必要的。