Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2721 / 13644 ツリー ←次へ | 前へ→

【66367】条件を満たすセルの背景色を変えるには ムカイ 10/8/27(金) 20:02 質問[未読]
【66368】Re:条件を満たすセルの背景色を変えるには あああ 10/8/27(金) 20:48 回答[未読]
【66372】Re:条件を満たすセルの背景色を変えるには ムカイ 10/8/29(日) 19:43 回答[未読]
【66373】Re:条件を満たすセルの背景色を変えるには マジ村レス次郎 10/8/29(日) 21:32 回答[未読]
【66374】Re:条件を満たすセルの背景色を変えるには kanabun 10/8/29(日) 21:37 発言[未読]
【66369】Re:条件を満たすセルの背景色を変えるには kanabun 10/8/27(金) 20:50 発言[未読]
【66381】Re:条件を満たすセルの背景色を変えるには UO3 10/9/1(水) 23:36 発言[未読]

【66367】条件を満たすセルの背景色を変えるには
質問  ムカイ  - 10/8/27(金) 20:02 -

引用なし
パスワード
   VBA勉強中ですがうまくいきません。

A列に前年実績
B列に本年実績
C列に本年目標

B列に数字を入れたとき
前年実績を下回ったら赤
本年目標を上回ったら青
という表を作っています。

365行(365日分)の行で
30セット(30店舗分)の表を作りたいです。

教えていただけるとありがたいです。

【66368】Re:条件を満たすセルの背景色を変えるには
回答  あああ  - 10/8/27(金) 20:48 -

引用なし
パスワード
   その30セットってのはシート30枚ってことっすか?なら

Sub aaa()
Dim a, b, c
For a = 1 To 30
For b = 1 To 365
Set c = Worksheets(a).Cells(b, 2)
If Worksheets(a).Cells(b, 1) > c Then c.Interior.Color = vbRed
If Worksheets(a).Cells(b, 3) < c Then c.Interior.Color = vbBlue
Next
Next
Set c = Nothing
End Sub

数字入れるごとに変えるならイベントで検索

【66369】Re:条件を満たすセルの背景色を変えるには
発言  kanabun  - 10/8/27(金) 20:50 -

引用なし
パスワード
   ▼ムカイ さん:

>B列に数字を入れたとき
>前年実績を下回ったら赤
>本年目標を上回ったら青
>という表を作っています。

一般機能の条件付き書式でできるような...

B列 365行を選択して
 メニュ−[書式]-[条件付書式]

  条件1 「数式が」 式「=And(B2>0,A2>B2) 」 → 書式 パターン 赤

追加
  条件2 「数式が」 式「=And(C2>0,B2>C2) 」 → 書式 パターン 青

とかで。


> VBA勉強中です

Worksheet_Change()イベントというのがあります。


>365行(365日分)の行で
>30セット(30店舗分)の表を作りたいです。
>
>教えていただけるとありがたいです。

【66372】Re:条件を満たすセルの背景色を変えるには
回答  ムカイ  - 10/8/29(日) 19:43 -

引用なし
パスワード
   ▼あああ さん:

返信ありがとうございました。

>その30セットってのはシート30枚ってことっすか?

列A,B,Cが店舗1
列D,E,Fが店舗2
列G,H,Iが店舗3 。。。。

といった感じで作ろうと思っています。
私の質問の文章がわかりづらくて申し訳ないです。

【66373】Re:条件を満たすセルの背景色を変えるには
回答  マジ村レス次郎  - 10/8/29(日) 21:32 -

引用なし
パスワード
   Sub aaa()
Dim a, b, c
For a = 0 To 29
For b = 1 To 365
Set c = Cells(b, a * 3 + 2)
If Cells(b, a * 3 + 1) > c Then c.Interior.Color = vbRed
If Cells(b, a * 3 + 3) < c Then c.Interior.Color = vbBlue
Next
Next
Set c = Nothing
End Sub

【66374】Re:条件を満たすセルの背景色を変えるには
発言  kanabun  - 10/8/29(日) 21:37 -

引用なし
パスワード
   ▼ムカイ さん:

>列A,B,Cが店舗1
>列D,E,Fが店舗2
>列G,H,Iが店舗3 。。。。
>
>といった感じで作ろうと思っています。

1行目:店舗名
2行目:前年実績    本年実績    本年目標 (一店舗につき 3列づつ使用)
3行目〜:データ

Sub 条件付き書式設定() '店舗30×365日
  Dim r As Range
  Dim i As Long
  
  Set r = ActiveSheet.Range("A3").Resize(365, 30 * 3)
  r.FormatConditions.Delete
  
  For i = 2 To 30 * 3 Step 3
    With r.Columns(i).FormatConditions
      .Add Type:=xlExpression, _
        Formula1:="=AND(RC>0,RC[-1]>RC)"
        .Item(1).Interior.ColorIndex = 3 '赤
      .Add Type:=xlExpression, _
        Formula1:="=AND(RC>0, RC>RC[1])"
        .Item(2).Interior.ColorIndex = 8 '水色
    End With
  Next
End Sub

365日分の行見出し(日付)はどこに?

【66381】Re:条件を満たすセルの背景色を変えるには
発言  UO3  - 10/9/1(水) 23:36 -

引用なし
パスワード
   ▼ムカイ さん:

こんばんは。横から失礼します。
kanabunさんからも示唆されていますが、この種の作業上、日付は必須ですね。
これからレイアウトをお決めになるようですのでkanabunさん五帝案のレイアウトを
右に1列ずらし、A列を日付列にされてはいかがでしょう。
また、入力作業の効率化を考えると、
・本年実績列のみセルの保護をはずした上でシート保護。
・シート保護の際はロックされた範囲の選択のティックをはずす。
・日付列の右、タイトル行の下のセルを選択してウィンドウ枠の固定。

それと、前年実績を登録して作業開始後、前年実績が間違っていたということで
登録しなおしがあるも知れませんし、本年目標が変更になるケースも考えられます。
入力欄のチェンジイベントで処理するロジックだと、こういった場合、条件にあっていても
色が変わりませんね。

ここは、kanabunさんも言っておられるように条件付書式の設定がよろしいかと
思います。手作業が面倒だということであれば、この設定のみVBA処理をされては
いかがでしょうか。

2721 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free