[[20090130195151]] 『ドロップダウンの複数印刷』(あき) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『ドロップダウンの複数印刷』(あき)

はじめまして。よろしくお願いします。

毎回、ドロップダウンで選択して、印刷をしているのですが、
これを自動的にドロップダウンにあるリストを印刷することは可能なのでしょうか?

ドロップダウンのリストには空欄があり、また、印刷対象ではないものも含まれています。

対象のリストのみを選択し、印刷できるような方法があれば、
ぜひ、教えていただければと思います。

どうぞ、よろしくお願いいたします。


 リストはセルを参照してますか?
 それとも「元の値」に手入力ですか?

 空欄があるとのことですのでセル参照だと思いますが。
 セル参照なら、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)

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さん

教えていただき、ありがとうございます!

MARBINさんに教えていただいたことと、参考サイトを見ながらやって、なんとか出来ました!

どうもありがとうございました。

(あき)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.