• ベストアンサー

VBAについて

VBAで、セル範囲 C9:E16について, 空白セルの場合は背景色を黄色にし、 値が負数なら文字色を赤色にし、いずれでもない場合は文字色は自動, 背景色は色なしにする方法を教えて下さい。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

VBAが必要ですか? 条件付き書式で十分ではないですか? C9セルを選択し「書式」→「条件付き書式」で「セルの値が」「次の値に等しい」で値は「=""」の時書式で背景色を「黄色」にします。 「追加」から「セルの値が」「次の値より小さい」「0」の時フォントを「赤」にして背景色は「なし」にします もちろんVBAでもできますよ。以下のマクロを「シート名タブ右クリック」→「コードの表示」で開く画面に貼り付けて、C9:E16の値を変更してみてください Private Sub Worksheet_Change(ByVal Target As Range) Dim r, rng As Range   Set rng = Intersect(Target, Range("C9:E16"))   If Not rng Is Nothing Then     For Each r In rng       If Len(r.Value) = 0 Then         r.Interior.ColorIndex = 6       Else         If IsNumeric(r.Value) And Val(r.Value) < 0 Then           r.Interior.ColorIndex = xlNone           r.Font.ColorIndex = 3         Else           r.Interior.ColorIndex = xlNone           r.Font.ColorIndex = xlAutomatic         End If       End If     Next r   End If End Sub

a-za-z
質問者

お礼

zap35さん、大変丁寧な回答ありがとうございました。 参考にして実行してみたところ、『Set rng = Intersect(Target , Range("C9:E16"))』のところで『オブジェクトが必要です』とエラーが出てしまいました。もしよろしければ、これに関してアドバイスを頂けたら幸いです。 よろしくお願いします。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 割り込み失礼します。おそらく、 >『オブジェクトが必要です』とエラーが出てしまいました。 #1 のzap35さんのコードをそのまま貼り付けて修正すればよいのですが、書き換えてはいけない部分を書き換えたからです。厳密に、VBAには、予約語はありませんが、"Target" は、予約語と同様に扱われますので、その部分は、最後の行まで、変えてはいけません。

a-za-z
質問者

お礼

Wendy02さん、回答ありがとうございます。 Wendy02さんのおっしゃるように、どうやら書き換えてはいけない箇所を書き換えてしまったみたいです。そこの部分を修正したらなんとか終えることができました。 アドバイスありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

#01です。私のPCでは問題なく動作しましたが… もしかしたら貼り付けるシートを間違っていませんか? (標準モジュールシートに貼り付けているとか) いずれにせよPC環境が異なるのですからデバッグはご自身で行わなければなりませんよ。

a-za-z
質問者

お礼

zap35さん、回答ありがとうございます。 なんとか無事終えることができました。貴重なアドバイス本当にありがとうございました。

関連するQ&A