TOP > 机列表作成ツール2(出張授業用) > 制作秘話

***********************************************************************************************
                     机列表作成ツール2(出張授業用) 制作秘話
                                           Copyright(C) 2014 by しげるがもげる
***********************************************************************************************

◆はじめに
 このドキュメントには、制作に関わっての作者の思いや苦労が書いてあります。
 技術的な細かいことに興味のない方は、読み飛ばしてください。
 エクセルでマクロを組んでみようかなと思われる方は、読むと参考になる部分があるかもしれません。


◆制作秘話
 今回,出張授業で3クラスいくことになりました。今まで使っていた机列表も使い勝手は良かったのですが,
 印刷するときに,1つ1つファイルを開くのが面倒で,それをまとめてやれないかと思ったのがきっかけです。
 幸い,名簿も3クラス分印刷する必要があったので,先に大元の印刷メニューをそちらで完成させ,
 そのノウハウを出張授業用机列表に生かすことにしました。
 入力規則では,未記入者だけのリストから選択することは,そのまま生かしてあります。


◆工夫や苦労など
 <印刷メニューの表示>
  簡単な印刷ならMsgBoxを使って行うのですが,今回はチェックボックスで,印刷するワークシートを選択したかったので,
  ユーザーフォームを使うことにしました。

 <チェックボックスにワークシート名を表示させる>
  CheckBox1.Caption というコードを使って,チェックボックスにその都度ワークシート名を読み込むようにしました。
  ワークシート名を代入する処理を順番に6回していくのですが,ワークシートの数が足りないとエラーを起こして止まって
  しまいます。それで,On Error GoTo 〜 でエラーが起きたら,この一連の代入処理を飛ばすようにしました。
  (そうじゃないと,ワークシートが存在するかどうか,調べる処理が必要になってくるもので・・・。)
  
  ただ,ここのままだと,空欄のチェックボックスにもチェックをいれることができるので,感覚的に不自然です。
  どこのチェックボックスでエラーを起こしたのか変数に返ってくれば,それ以降のチェックボックスは使用不可にすることができるのですが,
  それを調べる方法は私にはわかりませんでした。
  そこで,最初に全部のチェックボックスを使用不可にしておいて,ワークシート名をラベルに代入する処理ができたら,使用可に
  するようにしました。これで,On Error GoTo 〜 で飛んだとき,それ以降はチェックボックスが不可のままになります。

 <ワークシート名をクラス名に変更する>
  ワークシート名がいい加減だと,印刷部分がエラーを起こして止まってしまいます。そこで,印刷ボタンを押す度に,ワークシート名を
  クラス名に書き換える処理をするようにしました。これで,ユーザーはワークシート名を意識しなくても済むようになりました。

 <セットにして印刷,それぞれで印刷>
  使い出してみると,2部,3部と印刷するとき,セットで欲しいときと,それぞれで2部,3部欲しいときがあることがわかりました。
  それで,オプションボタンで選択できるようにしました。方法は,For〜Next文とPrintOut のcopies:= を使い分けて,1つのプログラムで
  両方ができるようにしました。

 <たくさんのCheckBoxを,For〜Next文で処理する>
  最初,1つ1つチェックボックスにコードを書いていたので長くなり,修正するときも何カ所も同じ修正を加えなければなりませんでした。
  それで,別のことでネットで検索していたら,まとめる方法が載っていたので,それを使いました。それが以下の命令です。
    Me.Controls("CheckBox" & n)
  これで,CheckBox も変数を使って指定できるようになり,コードが簡略化されました。


◆最後に
 ここまで、熱心に読んでくださってありがとうございました。
 プログラムを組んだことのない方には、わかりにくい内容だと思いますが、これを機会にエクセルの
 マクロに興味を持っていただければ、と思っています。
 エクセルは、本当に楽しいツールです。自分の思いや考えが表現できます。
 そんなエクセルに、日々、感謝です。