2017-05-15 128 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是默認的,所以它是沒有必要的。