2017-11-23 22 views
0

私が扱っているテーブルは約40k行あり、クリアしたいデータは最初の15列にあるので、ジョブを実行してください:テーブル内の特定の列の内容を正しくクリアする方法(Excel)

Sub DeleteOperationsTable() 
    Application.EnableEvents = False 
    Dim i As Integer 
    For i = 1 To 15 
    (*) Sheet(1).ListObjects("Table1").ListColumns(i).DataBodyRange.Clear 
    Next i 
    Application.EnableEvents = True 
End Sub 

1から7までの列だけがクリアされます。

問題をデバッグするために、私はブレークポイント(*)を設定しました。そして、それは無限ループに入るようです。 7回目の反復の後、最初からsubが再び開始します。

これはなぜ起こるのですか?

+0

あなたは答えをあなたの元の質問を編集していたべきではありません。元の質問に戻してください。 – EEM

答えて

1

私は推測させてください! :)あなたはワークシートの変更によってDeleteOpertationsTable()を呼び出しているワークシート内のイベントを持っています。

Application.EnableEvents = Falseでイベントを無効にすると、コードが機能するはずです。私はこれを試してみました、それはOKだった:

For i = 1 To 15 
    Sheets(1).ListObjects("Table1").ListColumns(i).DataBodyRange.Clear 
Next i 
+0

奇妙なことが起きて、私は元の投稿で見ることができるようにコードを修正しました。今度は15の列を反復しますが、15番目の反復の後に、サブが再び開始します。 サブボタンはボタンにのみ割り当てられ、ドキュメントにはイベントはありません。 – giorgiline

+0

@giorgiline - それは奇妙な、真実です。イミディエイトウィンドウに 'DeleteOperationsTable'と書いてEnterを押すとどうなりますか? – Vityata

関連する問題