0

明確な理由もなく、エラーも発生せずに実行を停止するコードがあります。それはメモリの問題でしょうか?操作しているシートには、多くの書式設定と条件付き書式が含まれる約 1600 行があり、行を挿入するとコードが停止します。停止するコードスニペットは次のとおりです。

With wsBudget
    TotalColumn = .Range("TotalColumn").Column
    FormulaColumn = .Range("FormulaColumn").Column

    If .Cells(lRow, 1).Interior.Color <> 14408946 Then  'OK to insert
        cell.EntireRow.Copy
        cell.Resize(RowCount, 1).EntireRow.Insert  'It stops after stepping into this line
        .Cells(cell.Row - RowCount, 1).EntireRow.ClearContents
        .Cells(cell.Row - RowCount - 1, FormulaColumn).Resize(RowCount + 1, 1).FillDown
        .Cells(cell.Row - RowCount - 1, TotalColumn).Resize(RowCount + 1, 1).FillDown
        .Cells(cell.Row - RowCount - 1, 1).Resize(RowCount, 1).Interior.Color = RGB(255, 255, 255) 'OK to insert or delete
    Else
        MsgBox "You must select a cell within a table before inserting a row."
        Exit Sub
    End If

End With
4

3 に答える 3

0

OK、これで答え (または少なくとも回避策) があると思います。上で示したように、クリップボードに関連している可能性があると思いました。だからコピー命令の直前に挿入した

Application.CutCopyMode = False

問題は解消されました。

于 2014-07-05T17:03:36.863 に答える
0

これは Excel のバグであると 90% 確信しています。複数のマクロで問題が発生しましたが、他のすべての要因が一定であっても一貫性がありません。通常、再実行は機能します。また、実行時間の長いマクロでも発生する可能性が高くなります。

Exit Subメッセージボックスに続くので、それはそうではありません。未処理のエラーが発生した場合、VBA は中断する (そして中断する) ため、エラー処理が不足しているわけではありません。エラーも再現可能です。

私が見つけた最善の回避策は、「メイン」ワークシートに開始時刻と終了時刻を出力することです。ユーザーが終了時刻を取得しない場合、マクロは途中で停止したと見なされます。

于 2017-08-24T15:49:20.397 に答える