Excel VBA質問箱 IV

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

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


5376 / 13646 ツリー ←次へ | 前へ→

【51173】期日に指定文字の色変換をさせる Kiyoko 07/9/1(土) 9:33 質問[未読]
【51174】Re:期日に指定文字の色変換をさせる じゅんじゅん 07/9/1(土) 9:56 発言[未読]
【51175】Re:期日に指定文字の色変換をさせる 落第生 07/9/1(土) 10:21 回答[未読]
【51178】Re:期日に指定文字の色変換をさせる Kiyoko 07/9/1(土) 17:53 質問[未読]
【51180】Re:期日に指定文字の色変換をさせる 落第生 07/9/1(土) 18:00 回答[未読]
【51184】Re:期日に指定文字の色変換をさせる Kiyoko 07/9/2(日) 13:35 お礼[未読]
【51187】Re:期日に指定文字の色変換をさせる 落第生 07/9/2(日) 13:49 回答[未読]
【51189】Re:期日に指定文字の色変換をさせる じゅんじゅん 07/9/2(日) 14:05 発言[未読]
【51190】期日に文字の色変換をさせる Kiyoko 07/9/2(日) 17:06 質問[未読]
【51191】Re:期日に文字の色変換をさせる りん 07/9/2(日) 17:42 回答[未読]
【51193】Re:期日に文字の色変換をさせる じゅんじゅん 07/9/2(日) 20:44 発言[未読]
【51203】Re:期日に文字の色変換をさせる Kiyoko 07/9/3(月) 7:21 質問[未読]
【51204】Re:期日に文字の色変換をさせる りん 07/9/3(月) 8:18 回答[未読]
【51205】Re:期日に文字の色変換をさせる じゅんじゅん 07/9/3(月) 9:23 発言[未読]
【51207】Re:期日に文字の色変換をさせる Kiyoko 07/9/3(月) 19:33 お礼[未読]
【51179】Re:期日に指定文字の色変換をさせる Kiyoko 07/9/1(土) 17:55 お礼[未読]

【51173】期日に指定文字の色変換をさせる
質問  Kiyoko  - 07/9/1(土) 9:33 -

引用なし
パスワード
   よろしくお願いします。

下の表で、契約終了日の30日前には、契約終了日の文字が赤色に変わる
また、契約終了日が過ぎると、契約終了日に文字の色が青色に
変わるようにしたいのですが。
マクロを作成する上でのアドバイスお願いします。
条件付書式設定で、最初は作成したのですが、期日が過ぎると
色が変更が出来ませんでした。
「=C2<$G$6+30」・・・G6=Today()
 A      B        C
1 氏名    契約開始日    契約終了日
2 西村    2006/9/1         2007/9/17
3 田中    2006/9/17         2007/9/17
4 北川    2006/10/10    2007/10/10
 :    :          :

マクロのチェックお願いします。現在色が変わりません
Sub 色文字変更()
Dim MyR As Range, R As Range
 With Sheets("sheet1")
  Set MyR = .Range("c2", .Range("c" & Rows.Count).End(xlUp))
  For Each R In MyR
  If R.Formula > "=today()"−30 Then
   R.Font.ColorIndex = 3
  End If
  Next
End With
End Sub

また、出来ましたら、ブックを開くと表示できるようにしたいのですが。

【51174】Re:期日に指定文字の色変換をさせる
発言  じゅんじゅん  - 07/9/1(土) 9:56 -

引用なし
パスワード
   ▼Kiyoko さん:
>よろしくお願いします。
>
>下の表で、契約終了日の30日前には、契約終了日の文字が赤色に変わる
>また、契約終了日が過ぎると、契約終了日に文字の色が青色に
>変わるようにしたいのですが。
>マクロを作成する上でのアドバイスお願いします。
>条件付書式設定で、最初は作成したのですが、期日が過ぎると
>色が変更が出来ませんでした。
>「=C2<$G$6+30」・・・G6=Today()
> A      B        C
>1 氏名    契約開始日    契約終了日
>2 西村    2006/9/1         2007/9/17
>3 田中    2006/9/17         2007/9/17
>4 北川    2006/10/10    2007/10/10
> :    :          :

条件付き書式 「数式が」
条件1 =AND((C2-$G$6)<=30,C2>=$G$6) 赤
条件2 =C2<$G$6           青

では、違いますか?

【51175】Re:期日に指定文字の色変換をさせる
回答  落第生  - 07/9/1(土) 10:21 -

引用なし
パスワード
   Private Sub Workbook_Open()
  Dim MyR As Range, R As Range
  With Sheets("Sheet1")
    Set MyR = .Range(.Range("C2"), .Range("C" & .Rows.Count).End(xlUp))
  End With
  For Each R In MyR
    If R.Value > Date - 30 Then
      R.Font.ColorIndex = 3
    End If
    If R.Value < Date Then
      R.Font.ColorIndex = 5
    End If
  Next
End Sub

【51178】Re:期日に指定文字の色変換をさせる
質問  Kiyoko  - 07/9/1(土) 17:53 -

引用なし
パスワード
   ▼落第生 さん:

ご返事ありがとうございました。
よく理解できました。

書くことを一部忘れていましたが、
期日が過ぎたものは・・・ColorIndexが5
30日前が・・・ColorIndexが3
これは確認できました。

あと、これ上記条件以外は文字を黒のままにしておきたいのですが・・・
ヒントお願いします。

【51179】Re:期日に指定文字の色変換をさせる
お礼  Kiyoko  - 07/9/1(土) 17:55 -

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

ありがとうございました。
条件付き書式の数式が完全に間違っていました。

>条件付き書式 「数式が」
>条件1 =AND((C2-$G$6)<=30,C2>=$G$6) 赤
>条件2 =C2<$G$6           青
>では、違いますか?

この通りで、期待通りのものが出来ました。

【51180】Re:期日に指定文字の色変換をさせる
回答  落第生  - 07/9/1(土) 18:00 -

引用なし
パスワード
   >あと、これ上記条件以外は文字を黒のままにしておきたいのですが・・・


最初に黒にするとか?
勘違いでしたらすみません。

Private Sub Workbook_Open()
  Dim MyR As Range, R As Range
  With Sheets("Sheet1")
    Set MyR = .Range(.Range("C2"), .Range("C" & .Rows.Count).End(xlUp))
  End With
  For Each R In MyR
    R.Font.ColorIndex = 1
    If R.Value > Date - 30 Then
      R.Font.ColorIndex = 3
    End If
    If R.Value < Date Then
      R.Font.ColorIndex = 5
    End If
  Next
End Sub

【51184】Re:期日に指定文字の色変換をさせる
お礼  Kiyoko  - 07/9/2(日) 13:35 -

引用なし
パスワード
   ▼落第生 さん:

色々とご配慮ありがとうございます。
3者選択(分岐)をこのような場合、IF関数では無理なんでしょうか?
SelectCaseですべきなんでしょうか?
何とか、Ifでしたいと色々といただいたコードで試行錯誤していますが
今一完成していません。
また、良いアイディアが有りましたら教えてください。

【51187】Re:期日に指定文字の色変換をさせる
回答  落第生  - 07/9/2(日) 13:49 -

引用なし
パスワード
   具体的にどういうデータで実行したときに、どんな結果になって
いることを望んでいるのか、もう一度書いてもらうことはできま
すか?

あと、コードのどの部分をIfに変更したいのでしょうか?
意図を汲みきれていなくてすみません。

【51189】Re:期日に指定文字の色変換をさせる
発言  じゅんじゅん  - 07/9/2(日) 14:05 -

引用なし
パスワード
   >あと、これ上記条件以外は文字を黒のままにしておきたいのですが・・・
>ヒントお願いします。

Cells.Font.ColorIndex = 0
はじめに全セルのフォント色を初期(=0)の黒にしてしまう。
のは?

【51190】期日に文字の色変換をさせる
質問  Kiyoko  - 07/9/2(日) 17:06 -

引用なし
パスワード
   ▼じゅんじゅん さん 落第生 さん:

分かりにくい表現ですみません。
もう一度書いてみます。過去書きましたデータとは関係なく
書きます。
契約の一覧表があります。

今日の日にち(毎日当日の日付になる)を基準に
契約終了日(C列)の日にちの文字色を3色に分けたいのです。

1、契約の30日前から今日の日にちまでのものは赤色
2、契約日が過ぎれば青色
3、それ以外(つまり契約日より31日以上期間がある)は
  黒文字
に分類したいのですが・・・
  A   B         C
1 氏名    契約開始日    契約終了日
2 西村    2006/9/1         2007/9/2    
3 田中    2006/9/17      2007/9/18
4 北川    2006/8/31         2007/9/1
5 西田    2006/10/2      2007/10/3
6 山中    2006/9/30     2007/10/1

結果は今日現在(9/2)で
C2・C3・C6の文字色・・赤
C4の文字色・・青
C5文字色・・黒
にしたいのです。

【51191】Re:期日に文字の色変換をさせる
回答  りん E-MAIL  - 07/9/2(日) 17:42 -

引用なし
パスワード
   Kiyoko さん、こんばんわ。

>  A   B         C
>1 氏名    契約開始日    契約終了日
>2 西村    2006/9/1         2007/9/2    
>3 田中    2006/9/17      2007/9/18
>4 北川    2006/8/31         2007/9/1
>5 西田    2006/10/2      2007/10/3
>6 山中    2006/9/30     2007/10/1
>
>結果は今日現在(9/2)で
>C2・C3・C6の文字色・・赤
>C4の文字色・・青
>C5文字色・・黒
>にしたいのです。

どなたかが書いておられた気がしますが、あらためて条件付き書式で

c2:c6を選択(アクティブなセルはC2)し、 書式→条件付き書式

条件1:
 『数式が』 =TODAY()>$C2
 フォント色 青

条件2
 『数式が』 =TODAY()>=($C2-30)
 フォント色 赤

条件3
 『セルの値が』 『次の値より大きい』 0
 フォント色 黒

こんな感じです。

【51193】Re:期日に文字の色変換をさせる
発言  じゅんじゅん  - 07/9/2(日) 20:44 -

引用なし
パスワード
   ▼Kiyoko さん:
>▼じゅんじゅん さん 落第生 さん:
>3、それ以外(つまり契約日より31日以上期間がある)は
>  黒文字
>に分類したいのですが・・・

それ以外を黒に・・・と言う事は何もしないと言う事では?
何もしないと言う事は・・・Excelの標準のフォント色(通常・黒)の
ままだと思いますが。

仮に別の色に変更しているものを、赤・青・黒に変更するのなら
条件は3つ必要でしょうけど、元々黒なら2つで出来るはずですが。

【51203】Re:期日に文字の色変換をさせる
質問  Kiyoko  - 07/9/3(月) 7:21 -

引用なし
パスワード
   ▼じゅんじゅん さん:
>それ以外を黒に・・・と言う事は何もしないと言う事では?
>何もしないと言う事は・・・Excelの標準のフォント色(通常・黒)の
>ままだと思いますが。
>
>仮に別の色に変更しているものを、赤・青・黒に変更するのなら
>条件は3つ必要でしょうけど、元々黒なら2つで出来るはずですが。

そのように思いますが、該当日を基準に30日〜1日前の設定が出来れば
問題ないのですが、・・・これがIf関数で表現できないのです。
If関数で出来ないので、SelectCaseで試してみました。
SelectCaseだと美味く行きました(下に書きました)が、
If関数で解決する良いアイディアがありましたらヒントください。

Dim i As Integer
  Dim k As Integer
  Dim LstR As Integer
   LstR = Range("A65536").End(xlUp).Row
   For i = 2 To LstR
   k = Cells(i, 4) - Cells(6, 7)
    Select Case k
     Case Is < 1
      Cells(i, 4).Font.ColorIndex = 5
     Case Is < 30
      Cells(i, 4).Font.ColorIndex = 3
     Case Else
      Cells(i, 4).Font.ColorIndex = 1
    End Select
   Next

【51204】Re:期日に文字の色変換をさせる
回答  りん E-MAIL  - 07/9/3(月) 8:18 -

引用なし
パスワード
   Kiyoko さん、おはようございます。

じゅんじゅん さんの、
>>仮に別の色に変更しているものを、赤・青・黒に変更するのなら
>>条件は3つ必要でしょうけど、元々黒なら2つで出来るはずですが。
この問いに対して

>そのように思いますが、該当日を基準に30日〜1日前の設定が出来れば
>問題ないのですが、・・・これがIf関数で表現できないのです。
これでは、話が全然かみあってないんですけど。

昨日書いた条件付き書式の方はスルーみたいなので。

IF分岐でやりたいということなら、

>Dim i As Integer
>  Dim LstR As Integer
>   LstR = Range("A65536").End(xlUp).Row
>   For i = 2 To LstR
With Cells(i, "C")
  If Date > .Value Then
   .Interior.ColorIndex = 5
  ElseIf Date >= (.Value - 30) Then
   .Interior.ColorIndex = 3
  ElseIf IsDate(.Value) Then
   .Interior.ColorIndex = 1
  End If
End With
>   Next

こんな感じです。

【51205】Re:期日に文字の色変換をさせる
発言  じゅんじゅん  - 07/9/3(月) 9:23 -

引用なし
パスワード
   >そのように思いますが、該当日を基準に30日〜1日前の設定が出来れば
>問題ないのですが、・・・これがIf関数で表現できないのです。
>If関数で出来ないので、SelectCaseで試してみました。
>SelectCaseだと美味く行きました(下に書きました)が、
>If関数で解決する良いアイディアがありましたらヒントください。
>
個人的にはこの様な場合(3つの条件)とかなら、Select Caseの方が
メンテしやすいかと思います。

そんなにIf文にこだわらなくても・・・

【51207】Re:期日に文字の色変換をさせる
お礼  Kiyoko  - 07/9/3(月) 19:33 -

引用なし
パスワード
   ▼りんさん じゅんじゅん さん:

ありがとうございました。よく理解できました。
これからもよろしくご指導のほどお願いします。
助かりました。

失礼します。

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