![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
お世話になります。
添付の様なEXCELがあります。
[管理シート]が一番左にあって、[商品番号]毎のシートが右にずらっと並んできます。
[管理シート]には「商品番号」(B4)と「商品名」(C4)と「数量」(D4)が記述されています。
商品数は可変で、増えたり減ったりします。それに伴いシートも増減します。
この商品番号は不規則にブランクがあったりしますので、この場合は読み飛ばしたいのです。
(管理シートの商品番号と商品番号シートの関係を分かり易くするため添付画像では黄色に塗りつぶしてあります)
■やりたい事
[管理シート]に「印刷」というボタンを作成します。
この「印刷」ボタンがクリックされたら、商品番号をチェックして、この商品番号と同じシートを開いてその「数量」に記述されている数字 + 1の回数分、選択されたシートを印刷したいのです。
(わかりづらくてスイマセン・・)
例)D1 ピーナッツパンならD1シートを7(6+1)回印刷したい
ただし、[管理シート]の「商品番号」と「商品番号」のシートの順番は一致しないため、管理シートの商品番号を順にチェックするたびに[管理シート]以外の全シートを毎回READする必要があるかと思います。
会社でこの様な仕事を依頼されて、困っています。
どなたかご教授いただけませんでしょうか?
よろしくお願い致します。
環境 WindowsXP SP3
Excel2003
![「EXCEL VBA 複数シートを指定回数」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/8/1358812_5497c1b590130/M.jpg)
No.3ベストアンサー
- 回答日時:
続けてお邪魔します。
>もしB列と同じ名称のシート名がなかったら「処理を中止します・・・
というより、スルーするようにしてみました。
(B列にあるSheetのみ印刷する)
Private Sub CommandButton1_Click()
Dim i As Long, k As Long, str As String, myFlg As Boolean
For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(i, "B") <> "" And Cells(i, "D") > 0 Then
str = Cells(i, "B")
For k = 1 To Worksheets.Count
If Worksheets(k).Name = str Then
myFlg = True
Exit For
End If
Next k
If myFlg = True Then
If MsgBox(str & "シートを" & Cells(i, "D") + 1 & "部印刷しますか?", vbYesNo) = vbYes Then
Worksheets(str).PrintOut copies:=Cells(i, "D") + 1
End If
End If
End If
myFlg = False
Next i
End Sub
こんな感じではどうでしょうか?m(_ _)m
tom04さん、早速のご連絡ありがとうございます!
ご教授いただきましたロジックで出来ました!!
本当に助かりました!
これで会社から依頼された通りの仕組みが出来ました。
いつもいつも本当にありがとうございます!!
No.2
- 回答日時:
No.1です。
>インデックスが有効範囲にありません
おそらくSheetが存在しないためのエラーだと思います。
前回のコードはB列がSheet名になっているという前提のコードですので、
そうでない場合は他の方法でSheetを指定する方法が必要になります。
この程度しかお答えできないのですが、
各Sheetを指定できる材料があれば具体的なコードも提示できると思います。m(_ _)m
この回答への補足
tom04さん、おはようございます。
またまたご連絡ありがとうございました!
tom04さんが仰る通り、B列と同じ名称のSheetが存在していないためのエラーでした。
もしB列と同じ名称のシート名がなかったら「処理を中止します」といった感じで処理を中止にするようなロジックは可能でしょうか?
何度も申し訳ございませんがよろしくお願い致します。
No.1
- 回答日時:
こんにちは!
「管理シート」のB列がSheet名と解釈して良いのですかね?
そういうコトだとしての一例です。
「管理シート」にコマンドボタンを配置し、それをクリックするとします。
↓のコードにしてみてください。
Private Sub CommandButton1_Click()
Dim i As Long, str As String
For i = 5 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(i, "B") <> "" And Cells(i, "D") > 0 Then
str = Cells(i, "B")
With Worksheets(str)
If MsgBox(str & "シートを" & Cells(i, "D") + 1 & "部印刷しますか?", vbYesNo) = vbYes Then
.PrintOut copies:=Cells(i, "D") + 1
End If
End With
End If
Next i
End Sub
※ 数量を少なくして試してみてください。
(紙がもったいないため)
こんな感じではどうでしょうか?m(_ _)m
この回答への補足
tom04さん、ありがとうございます!
いつもありがとうざいます!!
早速実行してみましたところ、下記のようなエラーが出てしまいました・・・
Worksheets(str)=<インデックスが有効範囲にありません>
申し訳ございませんが、再度お知恵をお借りできませんでしょうか?
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Excel(エクセル) Excel関数 情報引用する方法 4 2022/07/31 20:59
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Excel(エクセル) 【条件付き書式】countifsで複数条件を満たしたセルを赤くする方法 2 2023/02/09 23:53
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Excel(エクセル) エクセルで複数設定したハイパーリンク先を、どれを選んでも画面の左上に来るようにしたいのですが・・・ 3 2022/04/07 16:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VBA】PDF出力に任意のファイ...
-
エクセルのシートごとに連番を...
-
エクセル データベースからの引用
-
ユーザー定義関数の使用法
-
[EXCEL] あるフィールドをキー...
-
エクセルで シート保護のパス...
-
エクセルで、ハイパーリンクの...
-
ロータスについての質問。
-
エクセルVBA ワークシート検索...
-
既存ワークシートにピボットテ...
-
MicrosoftのExcelのシートの合...
-
PowerPointの表内のカンマ
-
エクセルで「-3E+06」と...
-
名簿の漢字名を関数で半角カナ...
-
LINEのこの空白ってどんな意味...
-
EXCELでタイトル行と一番下の行...
-
EXCEL 連動したドロップダウン...
-
Excelのテーブル上のセルの保護...
-
Excel 書式のクリア・値貼付け...
-
エクセルでセル内改行の1行目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VBA】PDF出力に任意のファイ...
-
エクセルのシートごとに連番を...
-
エクセルで設定していないのに...
-
エクセルでページごとにヘッダ...
-
excel串刺し計算で合計値が表示...
-
Excelマクロ パスワードを入力...
-
複数のEXCELシートの印刷順の指定
-
既存ワークシートにピボットテ...
-
エクセルで、ハイパーリンクの...
-
社内SEです。機種、ライセンス...
-
エクセルで個人成績グラフをつ...
-
【VBA】#N/Aを無視して串刺し...
-
Access2010 Excelのエクスポー...
-
エクセルのイベントVBAを複数の...
-
この記号、手短(テミジカ)に日本語...
-
[EXCEL] あるフィールドをキー...
-
エクセル VBAでシートのコピー...
-
Excel 一覧表から特定の数値を...
-
excelのシート番号を取得したい...
-
マクロ記録機能を使ってグラフ...
おすすめ情報