• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAがうまく動作しません)

VBAでセルをDeleteすると型が一致しないエラーが発生する問題について

このQ&Aのポイント
  • VBAを使用して特定のセルの内容をDeleteする際に、型が一致しないエラーが発生します。
  • このエラーはDeleteした場合にのみ発生し、他の操作では問題ありません。
  • 解決するためには、変更イベントの処理を修正する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

んーと。 そのマクロは,シート1のB1「だけ」に入力規則しているご質問の回答マクロから,ほとんど何も対応できていませんね。 回答したように「複数個のセル」が対象範囲になっている状況では,Targetに「複数のセル」が入ってくる場合があるため,エラーが起こる可能性が高くなります。 またエラーを回避できても,そのあとシート2にオートフィルタを掛けるに際して,そもそもC40からC45までの「どのセルの値」でオートフィルタしたらいいのか,優先順位や一体どうしたいのかが不明瞭なままです。 作成例: private sub worksheet_change(byval Target as excel.range)  if application.intersect(target, range("C40:C45")) is nothing then exit sub  worksheets("リスト").autofiltermode = false  if target.count > 1 then exit sub  if target = "" then exit sub  worksheets("リスト").range("A:I").autofilter field:=1, criteria1:=target.value end sub #補足 ご相談投稿時には,マクロの「具体的にどの行でエラーが起きたのか」(エラーのダイアログが出たときにデバッグのボタンを押すと,どの行が黄色く表示されるのか)についても,キチンと情報提供するように心がけてみてください。

roadsky353
質問者

お礼

最後まで、丁寧にお付き合いくださり有難うございました。 当方の質問の仕方が至らないばかりに かなりのお手間を取らせてしまい、反省しております。 ここ数回の質問で頂いたコードを見比べ 勉強させて頂きます。 本当にありがとうございました。

その他の回答 (1)

回答No.2

質問は適切に書いた方がいいと思います。 「C40 から C45 に掛かる複数のセルで変化が起きた場合」 って感じですか? 複数セルだった場合、Worksheet_Change イベントの引数 Target は単一セルではなく複数セルを持つ Range オブジェクトなので、 If Target.Value = "" Then のように Target を単一セルのように扱ってしまっては NG です。 Dim r As Range For Each r in Target   If r.Value = ... Next のように Target から単一セルを取り出して処理してください。

関連するQ&A

専門家に質問してみよう