我有一张工作簿,上面有几张表格。我想将工作表中的所有行聚合到第一个主表中。我希望它是动态的,所以当我向其中一个工作表添加一行时,它会将该行添加到主表中。这是我的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
个关键字?
答案 0 :(得分:0)
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)
编辑:为了澄清,请不要在实际代码中包含[]。 : - )