1

我有一个工作簿,上面有几张桌子。我想首先将工作表中的所有行聚合到主表中。我希望它是动态的,因此当我将一行添加到其他工作表之一时,它会将行添加到主表中。这是我的 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. 该错误是在子名称上引发的。这是定义。当然,它还没有定义。关于为什么会发生这种情况的任何想法?

注意:我相信错误实际上是由continue关键字引起的。VBA中有continue关键字吗?

4

2 回答 2

0

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

break也不是 VBA 语句 - 您可能想要Exit代替它。

于 2012-08-07T21:22:51.570 回答
0

关于您的 Update1,

问题出在您的 While 循环中。

正确的格式是这样的:

Do while [boolean expression]
'do something
Loop

更具体地添加Do之前While,并将您的第一个更改NextLoop

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

While [boolean expression]
'do something
Wend

但您应该使用Do...Loop 结构(单击链接查看示例)

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

于 2012-08-07T21:24:25.080 回答