| 
    
     |  | ▼ウッシ さん: 毎度丁寧にアドレスいいただきありがとうございます。
 最初の行でActiveSheetをPrtSheetというワークシートオブジェクトに代入し、以降使用を止めました。
 その上で書き込んで頂いたコードを試しましたが、xlRangeのアドレス、加算セルのアドレス共に意図した通りのアドレスが表示されることを確認いたしました。
 
 念のため書き直したコード全てを下記に記載します。
 
 
 Dim PrtSheet As Worksheet
 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
 
 'PrtSheetには受注明細を記載したシートがセットされます。
 Set PrtSheet = ActiveSheet
 PrtSheet.PageSetup.BlackAndWhite = True
 
 '受注明細を記載したシートのタブの色が赤の時のみ実行されるようにしています。
 If PrtSheet.Tab.ColorIndex = 3 Then
 'xlSheetには1つ目のファイルの出荷履歴のシートがセットされます。
 Set xlSheet = ThisWorkbook.Worksheets("商品マスター")
 With PrtSheet
 '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
 
 '----------------------------------------------------------------------------
 
 Sub Standard(mon As String, item() As Object, i As Long)
 Dim xlSheet As Worksheet
 Dim objx As Object
 Dim objy As Object
 Dim WMon As Long
 Dim WItem As Long
 
 'Function IsBookOpenを使用し、既にファイルが開いているかを確認し、ファイルを開きます。
 If IsBookOpen("RFMラドル出荷状況一覧.xlsx") = False Then
 Workbooks.Open Filename:="C:\Users\Yusuke Kumano\Dropbox\RFMラドル出荷状況一覧.xlsx"
 End If
 
 With PrtSheet
 'xlSheetに主要な製品の在庫数を記載したシートをセットします。
 Set xlSheet = Workbooks("RFMラドル出荷状況一覧.xlsx").Worksheets("標準品在庫")
 'objxにコメントを書き込むX軸(売上月)の位置を検索します。
 'objyにコメントを書き込むY軸(製品)の位置を検索します。
 Set objx = xlSheet.Cells.Find(mon & "月", SearchOrder:=xlByRows, LookAt:=xlWhole)
 Set objy = xlSheet.Cells.Find(item(i), SearchOrder:=xlByColumns, LookAt:=xlWhole)
 '主要な製品ではければ、Subを抜けます。
 If objy Is Nothing Then
 Exit Sub
 End If
 'WMonに出荷数量とコメントを書き込む列を、WItemに行をいれます。
 WMon = objx.Column + 1
 WItem = objy.Row
 '出荷数量、コメント書き込みのプロージャーを再度呼び出します。
 Call WComment(xlSheet, WItem, WMon, item(), i)
 
 End With
 End Sub
 
 '----------------------------------------------------------------------------
 
 Function IsBookOpen(strBookName As String) As Boolean
 Dim objBook As Workbook
 
 IsBookOpen = False
 
 For Each objBook In Workbooks
 If objBook.Name = strBookName Then
 IsBookOpen = True
 Exit For
 End If
 Next
 End Function
 
 '----------------------------------------------------------------------------
 
 Sub WComment(xlSheet As Worksheet, WItem As Long, WMon As Long, item() As Object, i As Long)
 Dim xlRange As Range
 Dim ComTxt As String
 
 'PrtSheetは1つ目のファイルにある売上詳細を記入したワークシートです。
 With PrtSheet
 'xlSheetは出荷履歴(在庫数)をまとめたシートがセットされています。WMonは出荷月、WItemは売上製品です。
 Set xlRange = xlSheet.Cells(WItem, WMon)
 MsgBox "xlRangeのアドレスは-----" & xlRange.Address(0, 0, xlA1, True)
 MsgBox "加算セルのアドレスは-----" & .Range("F" & item(i).Row).Address(0, 0, xlA1, True)
 'xlRangeに既に数字(出荷数)が記入されている場合、加算します。
 xlRange.Value = .Range("F" & item(i).Row).Value + xlRange.Value
 'ComTxt(コメント内容)はPrtSheet(売上明細シート)に記載されている日付:.Range("D5")、客先:.Range("D5")、出荷数:.Range("F" & item(i).Row)を記載します。
 ComTxt = .Range("B5") & " " & .Range("D5") & " " & .Range("F" & item(i).Row).Value & "PC"
 'コメントが既にあるかないかで新規記入か追記かを判断しています。
 If xlRange.Comment Is Nothing Then
 xlRange.AddComment Text:=ComTxt
 Else
 xlRange.Comment.Text Text:=xlRange.Comment.Text & vbCrLf & ComTxt
 End If
 'コメント欄のサイズを自動調整します。ここでエラー発生(2回めのみ)。
 xlRange.Comment.Shape.TextFrame.AutoSize = True
 End With
 End Sub
 
 
 以上、よろしくお願いします。
 
 |  |