- ベストアンサー
在庫表シートから売れた商品の整理番号を削除する方法
- 在庫表シートから売れた商品の「整理番号」を含む行を削除する方法について学んでいます。マクロを使用して「在庫管理」を行おうとしていますが、うまくいっていません。在庫表の「整理番号」は「I2」セルにあり、3行目から下方向に4桁の数値で並んでいます。売れた「整理番号」は「D3」セルから下方向に入力されます。売上表に転記後、売れた「整理番号」を含む行を削除したいのですが、マクロコードがうまく作成できません。初心者なので、ヒントやアドバイスがあれば助かります。
- 在庫表シートで売れた商品の「整理番号」を削除する方法を学びたいです。マクロを使用して「在庫管理」を行おうとしていますが、うまくいっていません。在庫表の「整理番号」は「I2」セルに記載されており、3行目から下方向には4桁の数値が並んでいます。売れた「整理番号」は「D3」セルから下方向に入力され、売上表に転記されます。売れた商品の「整理番号」を含む行を在庫表から削除したいのですが、マクロコードの作成方法がわかりません。初心者なので、ヒントやアドバイスをいただけると嬉しいです。
- 在庫表シートから売れた商品の「整理番号」を削除したいと考えています。マクロを使用して「在庫管理」を行おうとしていますが、問題が発生しています。在庫表の「整理番号」は「I2」セルに記載されており、3行目から下方向には4桁の数値が続いています。売れた商品の「整理番号」は「D3」セルから下方向に入力され、売上表に転記されます。売れた商品の「整理番号」を含む行を在庫表から削除するためのマクロコードを作成したいのですが、うまくいきません。初心者なので、アドバイスやヒントをいただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 行削除をするときに 上の行から下に向かって処理をされていませんか? 行削除をループ処理で回すときは 下の行から始めて上に向かうのが基本です。 (上から始めてもできないことはありませんが‥) ↓を試してみてください。 ◆シート名は「在庫表」「売上入力」ですよね? ----------------------------------------------------------- Sub test() Dim sh As Worksheet, sh2 As Worksheet Dim i As Long, j As Long Dim cntDelete As Long, ZaikoRow As Long, UriageRow As Long Set sh = Worksheets("在庫表") Set sh2 = Worksheets("売上入力") Application.ScreenUpdating = False '「在庫表」I列の最終行を取得 ZaikoRow = sh.Range("I65536").End(xlUp).Row '「売上表」D列の最終行を取得 UriageRow = sh2.Range("D65536").End(xlUp).Row '「在庫表」の最終行から3行目まで削除処理 For i = ZaikoRow To 3 Step -1 For j = 3 To UriageRow If sh.Cells(i, "I").Value = sh2.Cells(j, "D").Value Then sh.Cells(i, "I").EntireRow.Delete cntDelete = cntDelete + 1 Exit For End If Next j Next i sh.Activate Application.ScreenUpdating = True If cntDelete > 0 Then MsgBox cntDelete & "件、削除しました。" Else MsgBox "在庫表から削除するデータはありませんでした。" End If Set sh = Nothing Set sh2 = Nothing End Sub -------------------------------------------------------------
お礼
AloneAgain 様 早速のご回答ありがとうございました。 教えていただきましたコードをペーストし、祈る気持ちでマクロを実行したところ、なんと!期待どおりの結果で在庫表から削除できておりました。 今日は快晴の日曜日。悩みが削除されまして、気分は上々です。これから、このコードを10回くらい読み直し、理解、応用ができるようにします。 ありがとうございました。