私の苦手なVBAを教えてください。

以下のような表があります。
A列…氏名
(中略)
E列…学習期間(月)←入力の際は「5」とか「4」とか数字のみ
F列~J列…上段→提出期限日・下段→提出日 ←例えばF2に提出予定日を入力したらF3に提出日を記入。F列から1回目の提出期限、G列2回目の提出期限…というようになっています。
K列…最終在籍月(最終提出期限日+3ヶ月)

まず、提出期限入力されたら自動的に塗りつぶしてくれないかなぁ…と。
例えばF10の提出日に「12/1」と入力したら、F9~F10を薄い水色にしたいんですね。
また、最終在籍月の3ヶ月前になったら、氏名のところを「ローズ」に塗りつぶしたいなぁ…と。
講座によって3ヶ月だったり6ヶ月だったり4ヶ月だったりするので空白セルになった部分は「青」で塗り潰したいんです。
このデータはA4~J4(J4には提出お願いメール送信した日を入力してます)にタイトルがあり(氏名・講座・主催)、A5、A6を結合して氏名が入力されています。
1人につき2行使用しています。
講座申し込みがあればA7、A8.A9A10…と入力していきます。


よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2008/12/02 12:56:18
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:SALINGER No.1

回答回数3454ベストアンサー獲得回数969

ポイント25pt

fuentebellaさんのコメントにあるようにVBAではなく条件付書式で可能なようです。

条件付書式の使い方

http://www.eurus.dti.ne.jp/~yoneyama/Excel/jyo-syo.html


具体的には

F5セルとF6セルの条件付書式を

数式が =F5<>""

書式を水色に。

F5とF6を選択してJ列までコピーし、更に下のにもコピーします。


名前のA5セルの条件付書式は

数式が =DATE(YEAR(K5),MONTH(K5)-3,DAY(K5))>TODAY()

書式を青色。


追加を押して条件2に、

数式が =DATE(YEAR(K5),MONTH(K5)-3,DAY(K5))<=TODAY()

書式をローズに。

結合したA5セルを下にコピーすれば完成です。


質問の意図を自分なりに解釈しましたが間違っていたら、ご指摘ください。

id:kanachan

ありがとうございます。

ただ、文字の色を変えるのではなく、セルの塗りつぶしをしたいので条件付書式だと厳しいような気がします。

すみません。

2008/12/02 11:59:50
id:Mook No.2

回答回数1314ベストアンサー獲得回数393

ポイント45pt

対象のシートのタブを右クリックし、「コードの表示」で表示される部分に下記のコードをコピーして

実行してみてください。


下記のように動作します。

  • A列(7行目以降)を変更(名前を入力)すると、その行(2行)を対象に条件付き書式を設定します。
  • A列はK列の日付の3ヶ月前(日にちは無視)になると色が付きます。K列は日付を入力してください。
  • F~J列に対して

   上段=空白、下段=空白・・・青

   上段≠空白、下段=空白・・・元のセルの色(たぶん白?)

   上段≠空白、下段≠空白・・・水色

色は下記を参照ください。

http://homepage2.nifty.com/miyuki-t/html/excelcolor.html


'// 色の定義
Const CELL_COLOR_BLANK = 5
Const CELL_COLOR_NAME = 38
Const CELL_COLOR_DONE = 20

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    For Each r In Target
        If r.Column = 1 And r.Row > 6 And r.Row Mod 2 = 1 Then
            setConditionallyForm r.Row
        End If
    Next
End Sub


Sub setConditionallyForm(rr As Long)
'// A列に設定
    With Cells(rr, "A").Resize(2, 1)
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, _
             Formula1:="=AND(RC11<>"""",(YEAR(TODAY())*12+MONTH(TODAY()))>(YEAR(RC11)*12+MONTH(RC11)-3))"
        .FormatConditions(1).Interior.ColorIndex = CELL_COLOR_NAME
    End With

'// F から5列(J列)まで設定
    With Cells(rr, "F").Resize(1, 5)
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, _
             Formula1:="=AND(RC="""",R[1]C="""")"
        .FormatConditions(1).Interior.ColorIndex = CELL_COLOR_BLANK
        
        .FormatConditions.Add Type:=xlExpression, _
             Formula1:="=AND(RC<>"""",R[1]C<>"""")"
        .FormatConditions(2).Interior.ColorIndex = CELL_COLOR_DONE
    End With
    
    With Cells(rr + 1, "F").Resize(1, 5)
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, _
             Formula1:="=AND(RC="""",R[-1]C="""")"
        .FormatConditions(1).Interior.ColorIndex = CELL_COLOR_BLANK
        
        .FormatConditions.Add Type:=xlExpression, _
             Formula1:="=AND(RC<>"""",R[-1]C<>"""")"
        .FormatConditions(2).Interior.ColorIndex = CELL_COLOR_DONE
    End With
End Sub

不明な点はコメントにて対応します。

id:kanachan

ありがとうございます!

初めてうまくいきました!!かなり爽快!!)

でも3ヶ月前になる前からA列は塗りつぶされていて…どうもK列に日付を入れると塗りつぶされている感じです。。。

そのままコピーしたのですが、、、なぜでしょう?

2008/12/02 12:01:26
  • id:fuentebella
    条件付書式で、なんとかなりそうな感じですが。。。
  • id:SALINGER
    条件付書式では文字の色もセルの色も設定できますよ。
  • id:Mook
    K列の日付はきちんと日付のデータとして、入力していますか?

    2008/12 とかだと日付にならないので 2008/12/1 のように入力してください。
    表示は書式の設定で好きなように表示できるので、月だけとか、年月だけとかは
    書式で調整ください。

    K列が日付データでないと、A列は赤になってしまいます。

    ちなみにやってることは、条件付書式の設定なので、SALINGERさんがやろうとしていることと
    同じようなことです。

    設定された、A列やF列の条件付書式を表示してみてください。
    設定状態が確認できます
  • id:kanachan
    SALINGER 様

    え?そうなんですか??
    その方法は知らないです…

    Mook様

    3ヶ月より前でなかったです。
    3ヶ月後です。
    today関数が入ってるのに5月でも名前セルが赤で塗りつぶされてしまいます。。。
  • id:kanachan
    Mook様

    解りました!!
    すごく初歩的な(それ以前?)のミスでした。
    先ほど申しましたように5月でもセルが赤になるのは
    2008/5/1
    だったからみたいです^^;

    2009/5/1
    に直したら思い通りになりました。

    お騒がせしてスミマセンm(_)m
  • id:SALINGER
    条件付書式のセルの色はパターンタブから設定します。
    http://hamachan.info/excel/jyoken.html
    条件付書式を使いこなせると、セルを色分けして見やすいシートが作れるのでぜひチャレンジしていみてください。
  • id:kanachan
    SALINGER様

    ありました!なるほどです!
    ご説明いただきありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません