1

テーブルを含む複数のシートを含むワークブックがあります。最初に、シートのすべての行をメイン テーブルに集約したいと考えています。動的にしたいので、他のシートの 1 つに行を追加すると、その行がメイン テーブルに追加されます。これが私のサブのコードです:

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キーワードが原因であると思います。continueVBAにキーワードはありますか?

4

2 に答える 2

0

continueは VBA では使用されません。代わりifに、メイン ループ内のコードをラップすることができます。

breakVBAステートメントでもありません-おそらく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 に答える