| 
    
     |  | 念のため印刷を押下した際に実行される最初のコードも記載します。独学で作成したので、読みづらいところも多々あると思いますが、よろしくお願いします。 
 1つ目のファイルには
 ワークシート1には製品の出荷履歴(X軸には納入月、Y軸には製品コード)
 ワークシート2以降はオーダー毎の受注明細が記載されています。
 2つ目のファイルには
 ワークシート1には発注履歴(今回は関係なし)
 ワークシート2には主要な製品の在庫表(入出庫履歴)(X軸には納入月、Y軸には製品コード)が記載されています。
 
 
 Private Sub Workbook_BeforePrint(Cancel As Boolean)
 Dim xlSheet As Worksheet
 Dim yer As String
 Dim mon As String
 Dim item(4) As Object
 Dim i As Long
 i = 1
 Dim objx As Object
 Dim objy As Object
 Dim WMon As Long
 Dim WItem As Long
 
 ActiveSheet.PageSetup.BlackAndWhite = True
 
 '受注明細を記載したシートのタブの色が赤の時のみ実行されるようにしています。
 If ActiveSheet.Tab.ColorIndex = 3 Then
 'xlSheetには1つ目のファイルの出荷履歴のシートがセットされます。
 Set xlSheet = ThisWorkbook.Worksheets("商品マスター")
 With ActiveSheet
 'yerには受注明細シートに記載されている納入年を、monには納入月が代入されます。それらの変数を使用し、出荷数を記入すべき出荷履歴シートのX軸を検索します。
 yer = Year(.Range("B5"))
 mon = Month(.Range("B5"))
 Set objx = xlSheet.Cells.Find(What:=DateValue(yer & "/" & mon & "/1"), SearchOrder:=xlByRows, LookIn:=xlFormulas)
 'itemには製品コードが入ります。受注明細には最大4製品の売上まで1つのシートに記入できるので、item(4)まで有ります。それらの変数を使用し、出荷数を記入すべき出荷履歴シートのY軸を検索します。
 Set item(1) = .Range("B9")
 Set item(2) = .Range("B14")
 Set item(3) = .Range("B19")
 Set item(4) = .Range("B24")
 Do Until item(i) = ""
 Set objy = xlSheet.Cells.Find(What:=item(i), SearchOrder:=xlByColumns)
 '検索されたX軸、Y軸の行、列の情報をそれぞれWMonとWItemに代入します。
 WMon = objx.Column
 WItem = objy.Row
 'コメント記入のプロージャーを呼び出します。
 Call WComment(xlSheet, WItem, WMon, item(), i)
 '2つ目のファイルに記入するプロージャーを呼び出します
 Call Standard(mon, item(), i)
 
 i = i + 1
 Loop
 '受注明細に印刷日時を記入し、タブの色をオレンジに変更します。
 .Range("I2") = Date
 .Tab.ColorIndex = 7
 End With
 ThisWorkbook.Activate
 End If
 End Sub
 
 
 |  |