|
▼nonoka さん:
こんにちは
まず、
>K列が他のコードで日付が変わっていきます。
>いれた時点では表示は間違って表示されていますが、
>ファイルを開きなおすと正常に表示されます。
「間違って表示」という意味が、いまいちわからないのですが、
「他のコード」とは、"計画調整" で K列にセットし、ループで調整しているところでしょうか?
最新の、その部分のコードがわからないのですが、仮に、そこで
Application.EnableEvents = False
'K列へのセット処理
Application.EnableEvents = True
こんなようになっているとすれば、「他のコード」で K列の日付がかわっても
今回の Workbook_SheetChange は実行されません。ブックを開きなおすと
Workbook_Open が必ず実行されるので、その結果、今回のコードが動きます。
ただ、「他のコード」に、Application.EnableEvents の手当てが加わっていないとすれば
そこでの変更で、対象の行(K列に値が入った行)について自動的に、今回の処理が実行される
はずなんですが・・・・????
もう1つ、K列への日付のセットが、"計画調整" だけで行われるとすれば、今回のコードも
Workbook_SheetChange ではなく "計画調整" 内で起動させるほうがいいかもしれませんよ。
で、
>本来、未投入となるところは空白になり、
>完了となるべきところが未投入になります。
「本来」というところが、コードとしては、そちらの要件どおりに書いているので、
どうなるべきかは、このトピで最初に説明のあった条件にしています。
念のため、コードと、最初の説明をつきあわせましたが、合致しているように思いますが?
コードで、処理している順番を言葉で書くと以下の通りです。
(条件が満足した時点で、その条件によるセットを行い、打ち止め)
1. まず、K列の入力が【日付】であった場合にのみ、この行を処理します。
空白を含み、日付以外の値が入った場合は処理しません。(L列は空白となります)
2. K列入力された行に関して、その行のN〜AA列にK3(今日)があれば、その列のタイトルを L列にセットします。
3. K列入力日付が その行のN〜AA列にあれば、その列のタイトルをL列にセットします。
4. K列入力日付が K3(今日)未満、つまり昨日以前なら、L列に "未投入" とセットします。
5. K列入力日付が K3(今日)以上、つまり今日以降で、かつ M列日付が K3(今日)未満、つまり昨日以前なら
L列に"完了"とセットします。
6. いずれの条件にも合致しなければ L列は空白になります。
|
|