ここから本文です

次工程表示 こちらで教えて頂いてマクロを作成しました。 うまくできたと思って...

miy********さん

2019/10/1210:46:06

次工程表示
こちらで教えて頂いてマクロを作成しました。
うまくできたと思って、チェックしていたんですが、
最初の質問時の私の説明不足で修正して頂きたい箇所があります。

画像のように指示先1015・指示先1014・指示先1021があります。
基本は1015→1014→1021と工程が進むのですが、
たまに1014と1021が前後する事があります。
で、1015は必ず初めの工程となります。

1015と次工程(1014or1021)が同じ日の時があり
画像のように1015と1014が同じ10/1の場合、
画像では切れてしまっているのですが、次々工程の1021の10/9が
反映されてしまっています。(黄色の部分です)
これを、同じ日であっても反映させるには、
どうすれば良いのでしょうか?

お知恵をおかしください!
宜しくお願い致します。

Sub 次工程表示()

Dim lastRow As Long
Dim r As Long
Dim rng As Range
lastRow = Range("A" & Rows.Count).End(xlUp).Row 'A列最終行
Range("D2:E" & lastRow).ClearContents '結果クリア
For r = 2 To lastRow '注目行を2行目からA列最終行まで
Set rng = nextProcess(Range("B" & r).Value, Range("C" & r).Value)
If Not rng Is Nothing Then '見つかったら
Range("D" & r).Value = rng.Value
Range("E" & r).Value = rng.Offset(0, 1).Value
End If
Next
End Sub

'次工程の指示先のセルを取得する関数
Function nextProcess(timeLimit As Date, orderNumber As Long) As Range
Dim lastRow As Long
Dim r As Long
'指示先1014
lastRow = Range("G" & Rows.Count).End(xlUp).Row 'G列最終行
For r = 2 To lastRow '2行目からG列最終行まで
If (Range("I" & r).Value = orderNumber) And (Range("H" & r).Value > timeLimit) Then '受注番号が同じで指示日が納期後なら
If nextProcess Is Nothing Then 'まだ次工程が無ければ
Set nextProcess = Range("G" & r) '次工程はG列注目行のセルから
Else '既に次工程が設定されていたら
If Range("H" & r).Value < nextProcess.Offset(0, 1).Value Then '注目行の指示日が設定されてる次工程の指示日より小さかったら
Set nextProcess = Range("G" & r) '次工程はG列注目行のセルから
End If
End If
End If
Next
'指示先1021
lastRow = Range("K" & Rows.Count).End(xlUp).Row 'K列最終行
For r = 2 To lastRow '2行目からG列最終行まで
If (Range("M" & r).Value = orderNumber) And (Range("L" & r).Value > timeLimit) Then '受注番号が同じで指示日が納期後なら
If nextProcess Is Nothing Then 'まだ次工程が無ければ
Set nextProcess = Range("K" & r) '次工程はK列注目行のセルから
Else '既に次工程が設定されていたら
If Range("L" & r).Value < nextProcess.Offset(0, 1).Value Then '注目行の指示日が設定されてる次工程の指示日より小さかったら
Set nextProcess = Range("K" & r) '次工程はK列注目行のセルから
End If
End If
End If
Next
End Function

Set nextProcess,次工程,2 To LastRow,orderNumber,Rows.Count,Value Then,L&amp;quot

閲覧数:
34
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

hot********さん

2019/10/1210:58:07

>If Range("L" & r).Value < nextProcess.Offset(0, 1).Value Then '注目行の指示日が設定されてる次工程の指示日より小さかったら



If Range("L" & r).Value <= nextProcess.Offset(0, 1).Value Then '注目行の指示日が設定されてる次工程の指示日か小さかったら

でどうでしょうか。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2019/10/17 10:35:25

hot・・・様
できました!!
なんとお礼を言ったらいいのか!!
本当にありがとうございます!!

教えて頂いたコードの意味を自分でも
ちゃんと勉強し、理解したいと思います!!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる