VBA:在Excel中创建宏 - 编译错误 - '未定义子或函数'

时间:2012-08-07 19:57:33

标签: vba excel-vba compiler-errors excel-2010 excel

我有一张工作簿,上面有几张表格。我想将工作表中的所有行聚合到第一个主表中。我希望它是动态的,所以当我向其中一个工作表添加一行时,它会将该行添加到主表中。这是我的Sub的代码:

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 个答案:

答案 0 :(得分:0)

在VBA中没有使用

continue - 您可以将if包裹在主循环中的代码周围。

break也不是VBA声明 - 您可能需要Exit代替。

答案 1 :(得分:0)

关于您的Update1,

问题出在你的While循环中。

正确的格式是:

Do while [boolean expression]
'do something
Loop

更具体地在Do之前添加While,并将您的第一个Next更改为Loop

从技术上讲,你也可以出于怀旧的原因使用我喜欢的这种结构:

While [boolean expression]
'do something
Wend

但您应该使用Do...Loop structure (click link for examples)

编辑:为了澄清,请不要在实际代码中包含[]。 : - )