• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロで行いたいのですが。シート1からシート3(ジャンル別の)

エクセルのマクロで商品データを一括印刷する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、シート1からシート3の商品データを入荷した商品名で検索し、その検索結果の行をコピーしてシート4に貼り付ける方法を教えてください。
  • 現在は手作業で商品名を検索し、行をコピーして印刷用シートに貼り付けているため、時間がかかっています。
  • バーコード印刷のマクロは既に作成済みであり、エクセルのバージョンは2003、OSはXPのSP3です。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

If mSheet.Name = "Sheet1" Or mSheet.Name = "Sheet2" Or mSheet.Name = "Sheet3" Then Sheets("印刷シート").Select 上記のシート名はそれぞれ自身のシート名に変更しましたか?

mima1229
質問者

お礼

kmetu様本当にありがとうございました。「Sheet1」が「sheet1」になっていて、「S」が大文字になっていませんでした。直したら出来ました。大変助かりました。

その他の回答 (4)

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.4

> mInputStr = InputBox("検索する商品名")の("検索する商品名")のところが「コンパイルエラー:プロシージャーの外では無効です」と表示されてしまいます。 Sub プロシージャ名() End Sub の間に入れてますよね。 もしくはどこか別のところにコピーしたものが残ってないですか。

mima1229
質問者

補足

kmetu様 ありがとうございました。 Sub 検索と印刷()を入れてありませんでした。入れなおして実行したところ、エラーは消えたのですが。検索画面「検索する商品名」に商品名を入れても候補が選択されません。もちろん印刷シートにも貼り付けられていませんでした。FindをSearchに変えてみましたが一緒でした。マクロって本当に難しいのですね。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

たとえば Dim mInputStr As String Dim mSheet As Worksheet Dim c As Object mInputStr = InputBox("検索する商品名") For Each mSheet In ActiveWorkbook.Worksheets If mSheet.Name = "Sheet1" Or mSheet.Name = "Sheet2" Or mSheet.Name = "Sheet3" Then With Worksheets(mSheet.Name).Range("A1:A" & mSheet.Range("A" & Rows.Count).End(xlUp).Row) Set c = .Find(mInputStr, LookIn:=xlValues) If Not c Is Nothing Then firstAddress = c.Address Do Sheets(mSheet.Name).Select ActiveSheet.Rows(c.Row & ":" & c.Row).Copy Sheets("印刷シート").Select ActiveSheet.Range("A" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial Set c = .FindNext(c) Loop While Not c Is Nothing And c.Address <> firstAddress End If End With End If Next Application.CutCopyMode = False こんな感じでどうでしょう

mima1229
質問者

補足

kmetu様さっそくの回答ありがとうございます。まだ初心者なもので、よくわからないので教えてもらいたいのですが。kmetu様の回答をコピーしてVBEの標準モジュールにコピーして実行してみたのですが、mInputStr = InputBox("検索する商品名")の("検索する商品名")のところが「コンパイルエラー:プロシージャーの外では無効です」と表示されてしまいます。なぜなんでしょうか。忙しいところ申し訳ありませんが対処方法はあるのでしょうか。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.2

ちなみに印刷シートの最終行に貼り付けるのは Sheets("印刷シート").Select ActiveSheet.Range("A" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial とかでできます。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

マクロのHELPでFindを検索してFindメソッドの使用例を参考にしてみたら簡単に出来ると思いますよ。

関連するQ&A