下記マクロについて質問します。 ''在庫管理ブックを開き、「品名」を取得する。 この部分、L列は有効になっていますか?L列に該当する項目があっても反映されません。 よろしくお願い致します。 Sub test() Dim MyWs As Worksheet, iLastRow As Long Dim iProductLot() As Long, iProductCount() As Long Dim wb As Workbook, ws As Worksheet, iSetRow As Long Dim sProductName() As String Dim ii As Long, jj As Long ''変数を設定する。 Set MyWs = ActiveSheet iLastRow = MyWs.Cells(MyWs.Rows.CountLarge, "C").End(xlUp).Row ReDim iProductLot(iLastRow) ReDim iProductCount(iLastRow) '在庫管理ブックを開き、「品名」を取得する。 Application.ScreenUpdating = False Set wb = Workbooks.Open("C:\Users\k\Desktop\在庫管理.xlsm", 0, True) Set ws = wb.Sheets("在庫") iSetRow = ws.Cells(ws.Rows.CountLarge, "D").End(xlUp).Row ReDim sProductName(iSetRow) For ii = 5 To iSetRow sProductName(ii) = Trim(ws.Cells(ii, "D").Value) _ & "☆" & Trim(ws.Cells(ii, "K").Value) _ & "☆" & Trim(ws.Cells(ii, "L").Value) Next ii ''「品名」行数分を繰り返し、LOT&数量を設定する。 MyWs.Activate For ii = 5 To iLastRow ''「品名」と「重量」が同じ場合に設定する。 For jj = 5 To iSetRow If InStr(1, sProductName(jj), MyWs.Cells(ii, "C").Value & "☆") > 0 _ And ws.Cells(jj, "F").Value = MyWs.Cells(ii, "F").Value Then iProductLot(ii) = iProductLot(ii) + 1 iProductCount(ii) = iProductCount(ii) + ws.Cells(jj, "I").Value End If Next jj Next ii ''「在庫管理」ブックを閉じる。 wb.Close False ''結果を設定する。 For ii = 5 To iLastRow If iProductLot(ii) = 0 Then MyWs.Cells(ii, "J").Value = "在庫なし" Else MyWs.Cells(ii, "J").Value = Format(iProductLot(ii), "#,##0") & "LOT(" _ & Format(iProductCount(ii), "#,##0") & "個)" End If Next ii ''変数を開放する。 Application.ScreenUpdating = True Set ws = Nothing Set wb = Nothing Set MyWs = Nothing End Sub
Visual Basic