- ベストアンサー
VBAについて
VBAで、セル範囲 C9:E16について, 空白セルの場合は背景色を黄色にし、 値が負数なら文字色を赤色にし、いずれでもない場合は文字色は自動, 背景色は色なしにする方法を教えて下さい。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
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
その他の回答 (2)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 割り込み失礼します。おそらく、 >『オブジェクトが必要です』とエラーが出てしまいました。 #1 のzap35さんのコードをそのまま貼り付けて修正すればよいのですが、書き換えてはいけない部分を書き換えたからです。厳密に、VBAには、予約語はありませんが、"Target" は、予約語と同様に扱われますので、その部分は、最後の行まで、変えてはいけません。
お礼
Wendy02さん、回答ありがとうございます。 Wendy02さんのおっしゃるように、どうやら書き換えてはいけない箇所を書き換えてしまったみたいです。そこの部分を修正したらなんとか終えることができました。 アドバイスありがとうございました。
- zap35
- ベストアンサー率44% (1383/3079)
#01です。私のPCでは問題なく動作しましたが… もしかしたら貼り付けるシートを間違っていませんか? (標準モジュールシートに貼り付けているとか) いずれにせよPC環境が異なるのですからデバッグはご自身で行わなければなりませんよ。
お礼
zap35さん、回答ありがとうございます。 なんとか無事終えることができました。貴重なアドバイス本当にありがとうございました。
お礼
zap35さん、大変丁寧な回答ありがとうございました。 参考にして実行してみたところ、『Set rng = Intersect(Target , Range("C9:E16"))』のところで『オブジェクトが必要です』とエラーが出てしまいました。もしよろしければ、これに関してアドバイスを頂けたら幸いです。 よろしくお願いします。