[[20120515145402]] 『条件によってシートの見出しの色を変更』(ぴっきー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『条件によってシートの見出しの色を変更』(ぴっきー)

 excel2007を使っていますが、2Qのセルに「=DATEDIF(F4,TODAY(),"ym")」
 の数式が入っていて、その結果が「6カ月」のものはそのシートの見出しを
 黄色にしたいのですが、どのようにすればよいでしょうか?
 よろしくお願いいたします。 
 

 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

     With Sh
         If .Range("Q2") = 6 Then
            .Tab.ColorIndex = 6
         Else
            .Tab.ColorIndex = xlNone
         End If
     End With

 End Sub

 でどうでしょうか?
 ※↑のコードはThisWorkbookシートモジュールに貼り付けてください。
   ご存知でしたらすいません。

 (se_9)

 すみません。ThisWorkbookシートモジュールに貼り付けて
 マクロ有効BOOKで保存して、マクロを有効したのですが
 シートの見出しの色は変わりませんでした。
 初心者なので、何か手順が抜けているのでしょうか…

 (ぴっきー)


se_9さんのコードで、
Q2には関数が入力されているので、Workbook_SheetChangeはトリガーになりません。
Workbook_SheetCalculateをトリガーにして、ワークシートコレクションをループで
チェックする必要があるのでは。
(みやほりん)

 みやほりんさんと衝突。

 横から失礼

 se_9さんのコードは、そのシートに変更があったら自動的に動くもの。
 計算式がF4の値をベースにしているので、F4には入力されるだろう、その入力された時に実行しようと
 そういうコード。

 F4の値をいろいろ変えてみても、色がついたり消されたりしないといこと?
 そうじゃなく、たぶん、コードを書いて保存した時に【既にQ2が6】だった。
 それを、開いた。あれ?色がついてないじゃないか?
 そういうことなのかな?

 あるいは、F4の日付と今日の日付による計算結果が6。でも開いた時に色がつかない?

 そうであれば、そういう対処を加えればいいんだけど、対象のシートって、ブック内の全てのシート?
 それとも、特定のシート?

 (ぶらっと)

察するに、「色つきタブのシートを目印にして作業したい」ということであろうと。

つまり、F4はすでにシート作成日?の入力がされていて、
そこから六ヶ月後に何らかの編集が必要なのではないかと推測します。

ブックを開いたときにF4の日付から六ヶ月経過したシートを簡単に見つけたい、
ということでしょう?
(みやほりん)


 みほやりんさんのおっしゃている通りです。
 内容の詳細は社員の有給の管理なのですが
 1社員1シートでF4には入社日が入っています。
 (なのでF4の数字は変更することはありません。)
 ○年6カ月で有給を更新したいので、社員数も多いですし、
 1つ1つ確認しなくて済むようにシートの見出しの色を変えたいです。

 (ぴっきー)

 Private Sub Workbook_Open()
     Dim Sh As Worksheet
     For Each Sh In Me.Worksheets
         With Sh
             If .Range("Q2") = 6 Then
                .Tab.ColorIndex = 6
             Else
                .Tab.ColorIndex = xlNone
             End If
         End With
     Next Sh
 End Sub

Calculateだと入力のたびにマクロが走ってしまうこともあるので、
「ブックを開いたとき」に実行されるサンプルコードです。
同じくThisWorkBookモジュールへ。
(みやほりん)


 できました!!
 ありがとうございます!
 勉強になりました。

 (ぴっきー)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.