我想做一個簡單的循環,在那裏我已經聲明瞭一些變量作爲數組條目。我最初使用它們作爲被覆蓋的變量,但是當我讀到這些變量不會在循環中每次都自動覆蓋時就改變了它們。For循環在第一次迭代後終止-Excel VBA
我的問題是這個循環在第一次迭代之後終止(沒有錯誤)。我似乎無法在另一片BOPE
弄清楚爲什麼...
的代碼基本上找到cons_sum(i,2)
每個i
,或在Pre-Summary
錶行和總結了一些數據,然後插入到總和Pre-Summary
。
這是我的第一篇文章,我自學vba所以請原諒任何代碼失敗。
這是我的代碼:
Option Explicit
Sub Create_GAR080()
Consmonth = Sheets("GAR080").Range("B2").Value
Sheets("Pre-Summary").Select
LastRow_summary = Cells(Rows.Count, "A").End(xlUp).Row
LastRow = 156
LastCol = 16
Dim cons_sum() As Variant
ReDim cons_sum(LastRow_summary, 4)
For i = 1 To LastRow_summary Step 1
cons_sum(i, 1) = Cells(i, 2).Value & "" 'pulls participant
cons_sum(i, 2) = cons_sum(i, 1) & Cells(i, 1) ' participant and gas gate concatenated
If cons_sum(i, 1) = "BOPE" Then
Sheets(cons_sum(i, 1)).Select
cons_sum(i, 3) = WorksheetFunction.Match(cons_sum(i, 2), Sheets(cons_sum(i, 1)).Range("A:A")) ' find participant gas gate combo
cons_sum(i, 4) = Application.Sum(Sheets(cons_sum(i, 1)).Range(Cells(cons_sum(i, 3), 5), Cells(cons_sum(i, 3), 16)))
If cons_sum(i, 4) > 0 Then
Sheets("Pre-Summary").Cells(i, 4).Value = cons_sum(i, 4)
End If
End If
Next i
On Error Resume Next
End Sub
在循環之前在'Lastrow_summay'上執行'debug.print'。我懷疑你正在循環行A和頂行之間的行數,也就是說,循環遍歷第一行。 – Bingo 2013-02-18 04:33:09
嗨賓果,LastRow_Summary出現爲1848年,這是我的預期.. – user2081943 2013-02-18 04:48:16
我看到的一個直接的問題是使用'選擇'當你說'表格(cons_sum(i,1))。選擇',你因爲你的'cons_sum(i,1)= Cells(i,2).Value'會改變表單,因爲它會引用錯誤的表單。我會建議看看這個鏈接。你真的應該避免使用'.Select' http://stackoverflow.com/questions/10714251/excel-macro-avoiding-using-select另外pleassssssssssssssssssssse避免使用'在錯誤恢復下一個'因爲不必要的原因:) – 2013-02-18 07:04:46