- ベストアンサー
VBAでセルをDeleteすると型が一致しないエラーが発生する問題について
- VBAを使用して特定のセルの内容をDeleteする際に、型が一致しないエラーが発生します。
- このエラーはDeleteした場合にのみ発生し、他の操作では問題ありません。
- 解決するためには、変更イベントの処理を修正する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
んーと。 そのマクロは,シート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 #補足 ご相談投稿時には,マクロの「具体的にどの行でエラーが起きたのか」(エラーのダイアログが出たときにデバッグのボタンを押すと,どの行が黄色く表示されるのか)についても,キチンと情報提供するように心がけてみてください。
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
質問は適切に書いた方がいいと思います。 「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 から単一セルを取り出して処理してください。
お礼
最後まで、丁寧にお付き合いくださり有難うございました。 当方の質問の仕方が至らないばかりに かなりのお手間を取らせてしまい、反省しております。 ここ数回の質問で頂いたコードを見比べ 勉強させて頂きます。 本当にありがとうございました。