2012-08-07 76 views
1

我有一個工作簿,其上有幾張工作表。我想將表中的所有行聚合到第一個主表中。我希望它是動態的,這樣當我向其他表中的一行添加行時,它會將行添加到主表中。這裏是我的子代碼:VBA:在Excel中創建宏 - 編譯錯誤 - '子或功能未定義'

Public Sub AggregateIssues() 
    For pgNum = 1 To ActiveWorkbook.Sheets.Count 
     If ActiveWorkbook.Sheets(pgNum).Name = "Main" Then 

      currSheet = ActiveWorkbook.Sheets(pgNum) 'Get Sheet 
      flag = True 
      RowIndex = 0 
      While currSheet.Tables(0).Rows(RowIndex).Cells(0).Text = Null Or currSheet.Tables(0).Rows(RowIndex).Cells(0).Text = "" 

      Row = currSheet.Tables(0).Rows(RowIndex) 
      ActiveWorkbook.Sheets("Main").Tables("MainTbl").Append (Row) 
      RowIndex = RowIndex + 1 
      Next 
     End If 
    Next pgNum 
End Sub 

目前,我得到一個編譯錯誤:Sub or function is not defined。錯誤發生在sub的名字上。這是定義。當然它還沒有定義。任何想法爲什麼發生這種情況?

注意:我相信這個錯誤實際上是由continue關鍵字引起的。 VBA中是否有continue關鍵字?

+2

'繼續'是不是在VBA中使用 - 這將不會編譯:既不會'break' – 2012-08-07 20:16:44

+0

是否有可比較的關鍵字? – ExceptionLimeCat 2012-08-07 20:17:18

+0

只需在循環中的代碼的其餘部分(change = to <>)中包裝'if'即可。而不是打破你想'退出'http://msdn.microsoft.com/en-us/library/t2at9t47(v=vs.80).aspx – 2012-08-07 20:20:24

回答

0

continue未在VBA中使用 - 您可以在主循環中圍繞代碼包裝if

break也不是VBA語句 - 你可能想用Exit來代替它。

0

關於您的Update1,

問題出在您的While循環中。

正確的格式是這樣的:

Do while [boolean expression] 
'do something 
Loop 

更具體While前加Do,並改變你的第一個NextLoop

從技術上講,你也可以使用這個結構,我喜歡懷舊的原因:

While [boolean expression] 
'do something 
Wend 

但您應該使用Do...Loop structure (click link for examples)

編輯:爲了澄清,請不要在您的實際代碼中包含[]。 :-)