- 締切済み
エクセルでチェックボックスを使用してシートの抽出及び一括印刷
首記の件、御指導願います。 技術も知識も足りない未熟者ですが宜しく御願致します。 さて、内容ですが、下記の通りです 現況:シート2~8に文章が入力されています。 作業:シート1に表紙を作る(シート2~8の表題を記入)。 シート1の各表題の前にチェックボックスを作成。 シート1のチェックボックスがオンである表題のシートを 抽出し一括で印刷する。 又、シート1-1を作りシート1でオンである表題のみ縦に 順番に表示する。 以上です。 可能でしょうか? 私のレベルでは無理と言われるかもしれませんが、 何とか作成したいので御指導のほど宜しく御願致します。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
結局VBAでSheet名も活用してしまっているのでいまいちかも。 [Alt]+[F11] VBE 挿入 - 標準モジュール に下記貼り付け。 Sub 印刷() Dim n As Byte n = 3 '3行目 Do '繰り返し 'E列で「True」だったら D列に書いてあるシート名を印刷プレビュー If Range("E" & n).Value Then _ Worksheets(Range("D" & n).Value).PrintPreview n = n + 1 If n > 255 Then Exit Sub '不要とは思うが一応 Loop Until Range("E" & n).Value = "" 'E列の値がなくなるまで End Sub Sheet1に印刷ボタンを設定し、上記マクロを登録する。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
明らかに、検証不足でしたm(_ _)m Sheet4は印刷されてしまいました 印刷に関することはVBAを使うことになりそうです すみませんでした
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
(VBAを使ったほうがよい気もしますが) VBAは苦手なのでユーザーフォームのチェックボックスを使う方法です。 Sheet1 チェックボックスとE列のセルをそれぞれリンクさせる。 (D列はメモ用なので書く必要はない。) F1セル 1 F2セル =E3+F2 下へオートフィル G1セル =MAX(F:F) Sheet2 A2セル =IF(Sheet1!$G$2>ROW(A1),ROW(A1),"") B2セル =IF($A2="","",INDEX(Sheet1!C:C,MATCH($A2,Sheet1!$F:$F)+1)) A2:B2セル 下へオートフィル Sheet3 印刷範囲を選択して ファイル - 印刷範囲 - 印刷範囲の設定 [Ctrl]+[F3]名前の定義 「Print_Area」 という名前があるので参照範囲を =IF(Sheet1!$B$3,Sheet3!$A$1:$E$14,"") として追加する(A1:E14セル範囲が印刷範囲の場合) Sheet4~ Sheet3 同様に Sheet4、Sheet5 も参照範囲を =IF(Sheet1!$B$4,Sheet3!$A$1:$E$32,"") =IF(Sheet1!$B$5,Sheet3!$A$1:$E$20,"") のようにする 印刷 Sheet3~Sheet5までを選択(作業グループ化)してから印刷する
- imogasi
- ベストアンサー率27% (4737/17069)
エクセルもシートとチェックボックスの組み合わせた使い方は、エクセル中・上級以上のわざです。 シート(もっと言うならセルの値)とチェックボックスの接点はプロパティのLinkedCellの指定しかなく、セルの値にならないと、関数等では使えないし、そういう方法で出来ない場合では、チェックボックスをVBA(プログラム)で扱わないといけない。 例えば B列の該当(シートを示す)行に1を入れたら指定(選択)の扱いにしてはだめなのか。 しかしこれにしても、そのB列の行の空白か1かによって、対応するシート(タブ)の選択に結びつけることは、VBAで無いと出来ないと思う。関数ではシート選択は出来ない。 シートが(複数とか)選択できたら、印刷(ただし手操作)は出来る。 それは「抽出」のイメージでなく、複数シートの一括印刷ができるという、エクセルの印刷の仕組みに持ち込むのだ。 VBAを勉強しないでやることは不可能と思うが、質問のシブリから相当 誰かの指導が必要と思う。 本質問は、丸投げなので答えないが、内容的にはVBAのそんなに難しいところを使うものではない。 コントロール(チェックボックスなど)などを使うとどうしてもVBAの出番になる。チェックボックスの値をどの時点で採るかという点では、コマンドボタンの貼り付け、クリックイベントと言う仕組みなどのことに課題が発展しそうである。 また印刷操作もボタン1つのクリックなどで、したいとなるだろうから。 ーー 後半は Sheet2 A列 B列 E列 TRUE 沿革について チェックB ON 1 TRUE 製造について チェックB OM 2 FALSE 販売について チェックB OFF A,B、E列は第3行目から始まり1行おきにしている E列の式は =IF(A3=TRUE,MAX($E$1:E2)+1,"") Sheet3では(質問では1-1シート) B3に =INDEX(Sheet2!$B$3:$B$20,MATCH(ROW()-2,Sheet2!$E$1:$E$20,0),1) 下方向に式を複写する。 #N/Aを出さないようにする式など、そもそも上記の式を理解してもらえるか心配があり、省略。
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
>私のレベルでは無理と言われるかもしれませんが、 どの程度かわかりませんが、文書化できないレベルでしょうか? 何をやりたいのか、つかみかねます。 メモ帳などに下記を記入しておくことをお勧めします。 そのまま、この掲示板に張り付けてもよいと思います 1.現状の把握 実行したいExcel上の操作をすべて書き出す(箇条書き) 2.手作業や人間が判断している部分に法則性がある場合は自動化できる可能性が高いので、詳しく書く 3.人でしか判断できない部分は入力画面などをだす(印刷部数など)
補足
回答ありがとうございます。 遅くなりましたが、やりたいことを順を追って書いてみました。 レベルは、表や書面を作る程度です。深く理解はしていません。 希望作業は以下の通りです。 宜しく御願致します。 1.シート1に目次(書類をファイルしたときの目次)を作成 例(シート1): -目次ー 1.○○○について 2.□□□について 3.×××について 2.目次の項目ごとにチェックボックスをつける 例(シート1): -目次ー □1.○○○について □2.□□□について □3.×××について 3.シート3以降に文章を作成 例(シート3~): 1.○○○について (1)・・・・・・・・・・・・。 (2)・・・・・・・・。 4.シート1の必要な項目のボックスにのみチェックを入れる 5.シート1でチェックした項目のみ順番にシート2に表示する 例(シート1): -目次ー ■1.○○○について □2.□□□について ■3.×××について ↓ 例(シート2): -目次ー 1.○○○について 2.×××について 6.シート2の目次に表示された項目についての文章(シート3以降)のみ印刷する。 ※1.シート2の目次も一緒に印刷する。 ※2.文章は項目ごとにシートを分けて作成する。 以上。
お礼
ありがとうございます。 指導なしではとても無理なことが 一目瞭然でした。 指導してくれる人を身近でも探してみます。 もし、見つからない場合指導していただけないでしょうか。 色々勝手なお願いばかりで失礼しました。