• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル イベントマクロ)

エクセルイベントマクロ:マクロ初心者のための塗りつぶし条件式について

このQ&Aのポイント
  • マクロ初心者の方がエクセルイベントマクロを使い、セル範囲に塗りつぶしを設定する方法を教えてください。
  • 特定の条件が満たされた場合に塗りつぶしを行い、条件が満たされていない場合には塗りつぶしがなくなるような処理を行いたいと考えています。
  • 半角数字(0以外)では動作するが、文字を入力するとエラーが発生するため、正常に動作させる方法を知りたいです。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

NO.1です。 たびたびごめんなさい。 前回の後者のコードでは空白セルがない場合、エラーとなりますので、 ↓のコードのように1行追加してください。 Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:F20")) Is Nothing Then Exit Sub On Error Resume Next '←お・ま・じ・な・い! With Range("A1:F20") .Interior.ColorIndex = xlNone .SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 7 End With End Sub どうも失礼しました。m(_ _)m

laichou
質問者

お礼

素早い解答ありがとうございます。早速試してみましたところ、バッチリでした。私初心者なのでまだ知らない言葉が少々ありますのでそこらへんを調べつつ引き続き勉強したいと思います。 どうもどうもありがとうございました。大変助かりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! >If a.SpecialCells(xlCellTypeVisible) Then の部分でエラーになるのでは? Dim a As Range If Intersect(Target, Range("A1:F20")) Is Nothing Then Exit Sub For Each a In Range("A1:F20") a.Interior.ColorIndex = xlNone If a = "" Then a.Interior.ColorIndex = 7 End If Next a としてみてはどうでしょうか? 今回はセル範囲が少ないので一つずつセルを検索していってもさほど問題はないと思いますが、 一気に!というコトであれば Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:F20")) Is Nothing Then Exit Sub With Range("A1:F20") .Interior.ColorIndex = xlNone .SpecialCells(xlCellTypeBlanks).Interior.ColorIndex = 7 End With End Sub といった感じでも大丈夫だと思います。m(_ _)m

laichou
質問者

お礼

素早い解答ありがとうございます。早速試してみましたところ、バッチリでした。私初心者なのでまだ知らない言葉が少々ありますのでそこらへんを調べつつ引き続き勉強したいと思います。 どうもどうもありがとうございました。大変助かりました。

すると、全ての回答が全文表示されます。

関連するQ&A