長かったExcelVBA講座も今回で最後となります。
持参薬鑑別システムの最終処理を行います。それではいきましょう。
スポンサーリンク
This Workbookとは?
具体的には市販されているシステムのように以下について行います。
- ワークシートを隠してユーザーフォームだけ表示させる
- エクセルファイル(持参薬鑑別システム)を開いたら自動的にfrmMenuが開くようにする
- frmMenuの閉じるを押すと、登録、変更した医薬品データを自動的に保存しExcelを終了させる
こんな感じですね。1と2は同時にいきましょう。
VBAProjectにThisWorkbookという部分がありますね。これを右クリックしてコードを表示を選択。ダブルクリックでもOKです。
「ワークブック(持参薬鑑別システム)を開いた時に○を実行する」となります。
さて、ここには何を書けばいいでしょうか?
frmMenu.Show
上のように入力して下さい。1行ずつ解説していきましょう。
これは「アプリケーション(ワークブック持参薬鑑別システム)を表示(Visible)しない(False)。」となります。
これでユーザーフォームだけが表示されるように設定できます。
市販のシステムは基本的にユーザーフォームしか表示されていませんよね?
ちなみにワークシートは見えていませんが、削除されたわけではないのでご安心下さい。
Falseは一般的に「正しくない」や「偽」等と訳されますが、VBAでは「~でない、~しない」と訳した方がしっくりきます。
ただ一つコードを追加する必要があります。
このままですとfrmInputで印刷ダイアログを表示して鑑別報告書を印刷する時に、ワークシートが表示されてそのままになってしまいます。
印刷する時はワークシートが強制的に表示されるのです。そのため印刷した後に再びワークシートを非表示にするコードを書きましょう。
frmInputの印刷ボタン(btnPrint)のコードに赤枠の部分を追加してください。
これでOKです。
あと印刷プレビューをすると全画面表示されて、印刷プレビューを閉じるボタンが表示されません。
元に戻りたい時は「タスクバーを右クリック→ウインドウを閉じる」でOKです。
ちなみにブックを非表示にしなければこういった問題は出ません。面倒臭いのが嫌いな方はこのコードは書かなくてもいいでしょう。
続いて
これは何回もやっています。「frmMenuを表示する。」
これによりワークブックを開いた時に自動的にfrmMenuが表示されるため、毎回F5キーを押さなくてもよくなります。
ただ他にまだ作業する必要がある場合はこの動作が起こらない方が都合がいいですね。
スポンサーリンク
システム完成まで実行されないようにする「コメントアウト」
システムがまだ完成していないのに、いちいち起動してしまっては面倒。
そのような場合にはコードの前に「’」を付けて下さい。コメント扱いとなり、実行されなくなります。
こんな感じですね。これでコードは実行されなくなります。システムが完成したら「’」を外せばOKです。
それでは最後のコードを書いていきましょう。
frmMenuの閉じるボタンのコードを見て下さい。
このままですと普通にfrmMenuを閉じるだけで、新規登録した薬や修正をかけた薬の情報が保存されません。
Application.Quit
Unload Meの下にコードを追加します。順に解説していきましょう。
「このワークブック(持参薬鑑別システム)をSave(保存)する」です。そのまんまですね。
ちなみに保存方法ですが、上書き保存となります。
これもそのまんまですね。「Application(ここではExcel)をQuit(終了)する」となります。
この2行を追加することで、「上書き保存してからExcelを終了する」という動作になります。
おわりに
いや~お疲れ様でした!
持参薬鑑別システムについてはとりあえずこれで完成です。
もし手書きで鑑別報告書を作成されている薬剤師の方がいらっしゃましたらぜひ現場で使ってみてください。自分で言うのも何ですが、十分実用レベルだと思います。
さて本システムを作成するにあたり、色々なステートメントやコントロールを使用しましたが、これはほんの一部です。
今回は「必要最低限の知識で作成する」というのがコンセプトでしたので、本当に厳選したものだけを使用しました。
とはいえ、この講座を通して皆さんはそれなりのシステムを1から作りました。講座開始前と比較して、相当レベルアップしていることを実感されているかと思います。
今なら過去に読んでもわからなかった書籍も理解できるようになっているでしょう。
最後に、ここまで読んで頂きまして本当にありがとうございました。
駄文にもかかわらず、最後までお付き合い頂いた皆様に本当に感謝致します。