重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VBA セル入力時、条件でセルの内容を削除する方法について。
VBA初心者です。
o21セルへ入力時、6つの条件で、条件によって下記範囲のセルを常に空欄にする状況を作成したいと思っています。
作動させたところコード13 型がありませんと表示されます。
どのように編集したらよろしいでしょうか。
お手数ですがご回答お願いいたします。
『作成コード』
Private Sub Worksheet_Change(ByVal Target As Range)
If Application.Intersect(Range("$O$21"), arget) Is Nothing Then
If Range("O21").Value = Range("J21") Then
Range("F24:H24").ClearContents
Range("F34:H37").ClearContents
Range("F39:H41").ClearContents
Range("F25:H25").ClearContents
Range("F44:H77").ClearContents
ElseIf Range("O21").Value = Range("J22") Then
Range("F23:H23").ClearContents
Range("F29:H29").ClearContents
Range("F25:H25").ClearContents
Range("F44:H77").ClearContents
ElseIf Range("O21").Value = Range("J23") Then
Range("F23:H23").ClearContents
Range("F29:H29").ClearContents
Range("F24:H24").ClearContents
Range("F34:H37").ClearContents
Range("F39:H41").ClearContents
Range("F26:H26").ClearContents
Range("G80:I81").ClearContents
ElseIf Range("O21").Value = Range("J24") Then
Range("F25:H25").ClearContents
Range("F44:H77").ClearContents
ElseIf Range("O21").Value = Range("J25") Then
Range("F24:H24").ClearContents
Range("F34:H37").ClearContents
Range("F39:H41").ClearContents
ElseIf Range("O21").Value = Range("J26") Then
Range("F23:H23").ClearContents
Range("F29:H29").ClearContents
Else
End If
End If
End Sub

A 回答 (1件)

自分も初級レベルですが。



2行目 arget って Target じゃないですか?
それとこのコードだと、o21セル以外への入力時の処理になってます。
Intersect(Range("$O$21"), Target) Is Nothing  の意味をご確認下さい。
また、ClearContentsのたびにWorksheet_Changeのイベントが働いてしまいますから、このような処理の場合は
Application.EnableEvents = False
Application.EnableEvents = True
の切り替えをするのが定番です。
調べてみて下さいね。
ついでに Application.ScreenUpdating も知っておくといいですよ。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!