フィルタのかかった表があるシートで、手動でA1の左上をクリック=全選択してdeleteボタン押すと、今表示されてる領域だけが消えます。フィルタが外れて、隠れていたデータが出てくる。そこでさらに全選択してdeleteでようやく全て消すことができます。
これが、VBAでも同じことが起きました。フィルタかかったシートに対してClearContentsしても、2回実行せねば消えることがありません。
回避策としては、フィルタを解除してからClearContentsする必要があります。
またそのとき、chatGPTが教えてくれた
On Error Resume Next
On Error GoTo 0
これを外すことができなかったので、ポイントとしてメモしておきます。
外してたらエラーになったのはたぶん、フィルタかかってないときにこれが発動されるとエラーになってしまうんだと思う
サンプルコード
Sub ClearFilteredData()
On Error Resume Next
ActiveSheet.ShowAllData ' フィルタを解除
On Error GoTo 0
' シートの全ての値をクリア
ActiveSheet.UsedRange.ClearContents
End Sub
エラーが発生してもプログラム停止しない
On Error Resume Next
' エラーが発生する可能性のあるコード
' ...
On Error GoTo 0
' 通常のエラーハンドリングに戻す
' エラーが発生しても通常通りメッセージが表示され、プログラムが停止する
' ...