• ベストアンサー

マクロ 選択された数値とタブの関連付け

分かりにくいタイトルで申し訳ありません。 まず、シートが12(Sheet1~12)あり、月ごとのデータがあります。1~12はデータを入力するだけの為に使っています。 別のシート(Sheet13)に、12か月分のデータが集計されています。Sheet13内に、リストボックスで月を選ぶ様になっており、リンクされたセルの数値から、選ばれた月のデータをLOOKUP等を使って表示しています。ついでにマクロで印刷まで出来るようになっています。 この印刷するマクロにコマンドを付け足して、選ばれた月に飛んでそのシートも印刷できるような方法はありますでしょうか? 例えば、リストから4月を選んだなら、Sheet13の表を印刷すると共に、4月に飛んでSheet4も印刷できるという機能です。 うまく説明できているのか自身ないですけど、何か知恵をお与えください。よろしくお願い致します。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

>>*4月の所は変数を用いてリストボックスの値を入れる。 >の意味が良く分かりません。 Dim sh As String sh = Range("A1").Value '実際のセル番地に訂正 Sheets(sh).PrintOut 仮にセルA1にリストボックスの値をリンクさせているなら、 その値を変数sh に代入し、シート名としている。 これを今のマクロに組めばいいと思います。 それでうまくいかなければ、今のマクロのコードを提示して 頂かないと回答も困難ですね。

kogomi
質問者

お礼

稲刈りに追われてお礼が遅くなって申し訳ありません。 上のマクロで解決しました。この程度でてこずっている様ではまだ青いです。もっと勉強します。 ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

下記を参考にしてください。 下記(1)は質問と直接関係ないが (1)1-12月の名前のシートを作る方法 標準モジュールに SheetはSheet1-Sheet13まで作ってある場合 Sub test01() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets MsgBox sh.Index If sh.Index > 12 Then Exit For sh.Name = Trim(sh.Index) & "月" Next End Sub ーー 3シートぐらいから、13のシートをつくるのはコードでできるが Sub test03() For i = Sheets.Count To 13 - 1 Worksheets.Add Next i End Sub (2)シート名が1月ー12月になった後で、リストボックスの項目に シート名1月ー12月を設定する方法 標準モジュールに Sub test02() For Each sh In ActiveWorkbook.Worksheets If sh.Index > 12 Then Exit For Worksheets("Sheet13").ListBox1.AddItem sh.Name Next End Sub (3)Sheet13のリストボックスをクリックしたとき その名のシートのA10セルを選択する方法 Sheet13のクリックイベントモジュールに Private Sub ListBox1_Click() n = ListBox1.List(ListBox1.ListIndex) MsgBox n Worksheets(n).Select ActiveSheet.Range("a10").Select End Sub MsgBoxの行は確認が済んだら削除のこと。 (4)印刷するのは(3)のコードの最後行の次ぎに ActiveSheet.Range("a1:J30").PrintOut や ActiveSheet.printOut を加える。

kogomi
質問者

お礼

直接的な答えではなくとも、とても参考になりました。ありがとうございました。 マクロは趣味で足を突っ込みつつある状態ですが、ご覧のとおりまだまだです。続けて勉強します。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

シート名を1月~12月にすれば、 Sheets("4月").PrintOut *4月の所は変数を用いてリストボックスの値を入れる。 或いは、リストボックスの値により変数に1~12を代入し Sheets("Sheet" & 変数).PrintOut ではどうでしょうか?

kogomi
質問者

補足

ありがとうございます。実際はシートは1月~12月になっています。(説明の為にSheet#を使いました。) >*4月の所は変数を用いてリストボックスの値を入れる。 の意味が良く分かりません。 Sheet13(集計)は、のマクロは、シート内の指定範囲が印刷されるだけのものです。リストボックスはリンクしたセルの数値を変えて、LOOKUPに使う形です。 リストボックスの数値は直接マクロに入っていないので、入れるとなるとどうすれば良いでしょうか?リンクされたセルの数値が1なら1月のシートも印刷するという仕組みです。 今更の補足ですが、マクロはあまりよく知らず、いくらかは読めますが自分で書くのは助けが必要です。

関連するQ&A