[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ドロップダウンの複数印刷』(あき)
はじめまして。よろしくお願いします。
毎回、ドロップダウンで選択して、印刷をしているのですが、
これを自動的にドロップダウンにあるリストを印刷することは可能なのでしょうか?
ドロップダウンのリストには空欄があり、また、印刷対象ではないものも含まれています。
対象のリストのみを選択し、印刷できるような方法があれば、
ぜひ、教えていただければと思います。
どうぞ、よろしくお願いいたします。
リストはセルを参照してますか? それとも「元の値」に手入力ですか?
空欄があるとのことですのでセル参照だと思いますが。 セル参照なら、VBAでセル範囲をループして印刷、 というのが可能です。
ただ、一般機能で出来ない、とは断言できません。
Sub prt() Dim r As Range Dim c As Range Set r = Worksheets("Sheet1").Range("A1:A10") For Each c in r if c.Value <> "" Then Worksheets(c.Value).PrintOut Next c End Sub
ただし、セルに存在しないシート名が入力されていたらエラー になります。
出来たら存在するシート一覧を自動取得するようにしておくか、 エラー処理をいれるようにしておいたほうがいいです。
コンボボックスやリストボックスを検討してみてもいいかもしれません。 (MARBIN)
>印刷対象ではないものも含まれています。
リストボックスが適しているかもしれません。
MultiSelectが可能です。 で、選択したものだけ処理、というのも出来ます。 (MARBIN)
ありがとうございます。
セル参照です。
リストボックスでのMultiSelectの方法を教えていただけないでしょうか?
よろしくお願いいたします。
フォーム、コントロールツールボックス、ユーザーフォームのどちらでしょう?
フォームやコントロールツールボックスはシートに直接設置できます。 ユーザーフォームでしたら、シートが切り替わっても表示できます。
ただし、リストボックスは常にリストが表示された状態になります。 コンボボックスは、ボタンがクリックされたらリストがドロップダウン します。
とりあえず、参考になりそうなサイトです。
『Excel(エクセル)基本講座:フォーム コントロール』 http://www.eurus.dti.ne.jp/~yoneyama/Excel/form.html
『VBA入門者の”どっち?”・・・フォームツールバー or コントロールツールボックス(1)』 http://www2.tokai.or.jp/mother/newhtm2/exvba/ev15/ev071.htm (MARBIN)
ユーザーフォームでの例です。
'ユーザーフォーム起動時にシート一覧をリストボックスに転記 Private Sub UserForm_Initialize() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets Me.ListBox1.AddItem ws.Name Next ws End Sub
'リストボックスで選択したアイテムを印刷 Private Sub CommandButton1_Click() Dim i As Long With Me.ListBox1 For i = 0 To .ListCount - 1 If .Selected(i) = True Then ThisWorkbook.Worksheets(.List(i)).PrintOut End If Next End With End Sub
なお、リストボックスのプロパティで MultiSelect を 1-fmMultiSelectMulti にしておいてください。
なお、セル参照してリストボックスに転記する場合は↓のようになります。
Dim r As Range Dim c As Range Set r = ThisWorkbook.Worksheets("Sheet1").Range("A1:A10") For Each c in r if c.Value <> "" Then Me.ListBox1.AddItem c.Value Next c
リストボックスの全選択、選択解除のサンプルです。
'リスト全選択 Private Sub CommandButton2_Click() Dim i As Long With Me.ListBox1 For i = 0 To .ListCount - 1 .Selected(i) = True Next End With End Sub
'リスト選択解除 Private Sub CommandButton3_Click() Dim i As Long With Me.ListBox1 For i = 0 To .ListCount - 1 .Selected(i) = False Next End With End Sub
なお、ユーザーフォームのリストボックスについて書きましたが、 コントロールツールボックスのリストボックスも同じ方法で制御 できます。
また、コントロールツールボックスの場合は、シートのイベントや シェイプ、フォームのボタンなどを使ってリストボックスの表示、 非表示を切り替えることも可能です。
フォームのリストボックスの便利だと思いますが、使い慣れてないので 解説できません・・・。
(MARBIN)
教えていただき、ありがとうございます!
MARBINさんに教えていただいたことと、参考サイトを見ながらやって、なんとか出来ました!
どうもありがとうございました。
(あき)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.