• TOP
  • 講座一覧
  • 実践添削事例-パソコンスクールのシフト表・予約フォーム生成マクロ

実践添削事例-パソコンスクールのシフト表・予約フォーム生成マクロ

◆必要な事前知識:「エクセルマクロ・VBA基礎編及び発展編1」レベル◆
ある受講生さんからのリクエストにお応えし、その方の書かれたマクロの内容を徹底添削しました。

本講座では、あるパソコンスクールにお勤めの受講生さんが実際に実務で活用されているフォームアプリを徹底レビューします。

・週替りカレンダーの作成
・シフト表の作成
・複数担当者の出勤予定日時データを元して、予約受付表を生成する

等々、生事例ならではの参考事例がてんこ盛りです。
動画全23本、総再生時間合計4時間17分相当の動画と、添削前、添削後のエクセルファイル、レジュメテキストファイルを使用し、実務直結のノウハウをふんだんにお伝えします。

・初級レベルのマクロは書けるようになった。でも、それ以上のものを作ろうとすると、頭か混乱してしまう。
・なんとかマクロは書き上げられるのだけど、上手に書けている気がしない。
・効率よくマクロを書けている気がしない。
・実務で活用されているマクロを見て学びたい。
・人が書いたマクロを書き直すときのノウハウ、イチから書き直すときのノウハウについて学びたい。
・マクロを書くときの、これまで思いもつかなかったようなアイデアをもらいたい。
・新しい課題にチャレンジしたい。

そんなふうに思われているあなたには、絶好の教材です。
講座を作った僕自身が言うのも何ですが、会心の教材ですので、上記のどれかに該当するあなたは、ぜひ、ご受講ください。

ご受講はどなたでも歓迎ですし、どなたの質問も受けつけます。
しかし、本講座は以下の講座で解説している知識を前提としています。
ですので、以下の講座でお伝えしている前提知識があまりにも不足している方からのご質問に対しては、直接ご回答する代わりに、内容理解のための情報源として、以下の講座をご案内することがあります。
・<a href="https://www.exvba.com/kiso.php" target="_blank"> 「エクセルマクロ・VBA基礎編」講座と演習</a>
・<a href="https://www.exvba.com/hatten1.php" target="_blank">「エクセルマクロ・VBA発展編1」講座と演習</a>

動画一覧

動画のサムネイルをクリックすると、この画面内で、動画が表示されます。

【動画1】 実践添削事例-パソコンスクールのシフト表・予約フォーム生成マクロ - イントロダクション - 18分44秒

実務で使われているマクロの添削例です。
シフト表作成、予約フォーム作成を自動化するマクロを添削します。
まずは、本講座の基本方針について。

ダウンロード資料があります。 資料をダウンロードする。


☆見どころ

○インデント
○変数宣言のタイミング
○If文とSelect Case文の使い分け
○Option Explicit - 変数の宣言を強制する

○プログラム全体の簡易レビュー
○宣言しているが使っていないムダな変数を見つける

○画面のチカチカを防止
○自動記録で生成したコードのブラッシュアップ

○効率よくテストをするための重要なテクニック

○日曜または月曜はじまりの週替りカレンダーの、効率的な作成法

○「複数条件のいずれか/すべてを満たす」等の条件分岐の、 And/Or を使わない効率的な書き方
○複雑な条件抽出を簡単なプログラムで表現するための「仕込み」

○祝日に色をつける
○一度引いた罫線の色を変更する、効率よい書き方
○色指定の方法

○「グチャグチャしたプログラムになってしまう」という問題の一般的な解決方法
○DPRに基づいたリライトの基本方針
○DPRに基づいた実戦的リライト例


参考までに、今回の添削を依頼された方からのメッセージを紹介します。

【添削を受ける前のメッセージ】

まだ心許ない・・・小川先生に指摘されたこの部分を、自分自身も感じていています。

アイデア的なものなのか、可読性の問題なのか・・・と思ってみたり。
今後マクロを書く上で参考にしたいので、アドバイスを頂けると嬉しいです。

よろしくお願いいたします。


【その1】

>現在、添削動画の動画1~動画10まで見終わりました。
>添削動画、すごく感動しています。
>ひとつひとつ感動しつつ、マクロの修正をしていってます。
>すごく良い学びになっています。ありがとうございます。
>
>・・と同時に自分のアホさもバレて恥ずかしいですが(笑)
>[[中略]]
>とにかくこれ以上アホだと思われないよう、頑張ります(^^;)

【その2】

>一通り、最後まで動画を拝見しました。
>今回もいろいろと気づきがありました。
>ありがとうございました。
>
>一番なるほど!と思ったのは、[[中略]]をしていたことで、良いアイデアが出てこなかったというところです。
>[[中略]]
>そんな経緯でShiftシートを作成したので[[中略]]ということも考えつかず。。(+_+)
>けっこうごちゃごちゃしたマクロになってしまいました。
>機能をもっと追加したくても、どうやってもできずにあきらめてしまっていた部分もあるのでもう一度、修正して作っていきます!
>
>今回、添削していただいて、自分では気が付けなかった部分をたくさん教えていただき本当に良かったです。
>小川先生、ありがとうございました。


【その3】

>パソコンスクールのシフト表・予約フォーム生成マクロ」のリニューアル解説動画を一通り見せていただきました。
>以前の解説とは違う切り口もあって、驚きました!
>たくさん驚きがあったのですが・・・
>
>特に・・・
>わたしはまだ発展2の復習が足りていなくて、
>Functionプロシージャーの使い方がずっとよくかわからずにいたのですが
>今回の動画でどういうときに使うことができるのかということがわかりました。
>しっかり身に着けて仕事でつかえるように復習します!


【その4】

>リニューアル動画、最後までじっくり復習いたしました。
>
>小川先生に添削をしていただいて痛感したことがあります。
>私は、とにかくコードを書いて、動かして、動けばそこで満足して次に進んでいました。
>
>そこで満足してしまわず、もう一度全体を見直す余裕を持つことも大事だと思いました。
>DPRを意識すること、見直しを意識することを忘れず、取り組んでいきます。
>
>じっくり確認することで、はじめは気が付かなかったことに気づいたり、祝日をさがすfindのコードも今、作成中のガンチャートにも使える!と早速コードを書き替えて復習したりと楽しかったです(^^)
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画2】 プログラム全体の概況を確認する - 9分32秒

プログラム全体のレビューをする準備です。
この段階で、いくつか修正すべき箇所が見つかりました。
また、シート削除のマクロについても、効率的な書き方を紹介しています。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画3】 人が書いたプログラムのインデントの調整と、変数宣言のタイミングについて。 - 5分19秒

人が書いたプログラムのインデントを調整する方法、変数宣言のタイミングについて。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画4】 インプットボックスの戻り値を検査する - 4分6秒

インプットボックスの戻り値によって処理を分岐します。
今回であれば、日付型のデータと解釈し得るかどうか?を確認のうえ、処理を進めます。
では、その検査の方法と、その方法を含めた処理の書き方は?
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画5】 予約受付表の作り方解説、効率よいステップ実行の方法等 - 6分59秒

受講生さんの書いた予約受付表作成部分について、まずは受講生さんの書いたマクロの仕組みを確認。
そして、その中身を添削していきます。
該当する日付のシフトを見つける方法、If文の書き方等々、シートコピーの効率良い書き方、…。直すところはいろいろあります。
ステップ実行のバリエーションとその使い方についても学びます。[F8]以外にもいろいろ使いこなせるようになると、テスト効率が向上します。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画6】 モジュールレベル変数宣言のデメリット、イミディエイトウィンドウでのマクロ実行、画像ファイルを変数で参照する - 13分9秒

モジュールレベ変数は便利なようで、乱用することのデメリットもあります。では、使い分けは?
画像ファイルを変数で参照設定するには?
イミディエイトウィンドウの使い方についても、効率的なテストに直結するノウハウがありますので、本動画で解説しています。
等々、各種テクニックについて解説しつつ、カレンダー作成部分等について、受講生さんの書いたマクロの中身を見ていきます。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画7】 ここまでのふりかえり、「デバッグ→コンパイル」、画面のチラつき防止 - 8分51秒

ここまでの講義をふりかえります。
特に、インデントについては、理解不足で間違えている方が多いです。
インデントをしっかりしておかないと、可読性が落ちるため、高度なマクロを書くことができなくなります。インデントはしっかりできるようにしましょう。
ほか、VBAでのコンパイル機能、画面のチラつき防止について。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画8】 DPRに基づいたリライト。R→D、D→R - 6分37秒

DPRの視点から受講生さんの書いたマクロを見直します。
R→Rになっていることがこのマクロ全体をゴチャゴチャしたものにしている理由です。
そこで、R→Dのマクロを用意し、こうして作ったDを元にてしRを作るという方向で仕事を再設計します。
では、R→Dを実現する具体的なマクロの書き方は?
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画9】 週替りカレンダーを作る - 13分21秒

週替りのカレンダーを作るには、「所定の曜日になったら値の入力先を別の行にする」という処理が必要です。そのための基本情報は?判定基準は?
本動画では、ここでカレンダーを書くプロセス全体も重要です。ハナコのステップに基づいてマクロを書くとして、どういう順序でマクロを書いていくか?という全体の流れも参考にしてください。
ほか、さりげないですが、変数名のつけ方、変更方法等々見てみてくたざい。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画10】 週替りカレンダーに担当者情報を記入する - 11分36秒

週替りカレンダーに担当者情報を記入します。
講師全員が出勤でない場合は休講扱いです。では、その状態の効率的な判定方法は?
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画11】 週替りカレンダーに受付可能時間を記入する-ベタな方法 - 17分54秒

週替りカレンダーに受付可能時間を記入します。
これから3つの方法を紹介しますが、まずはベタな方法から。
シフトタイプから各講師の出勤時間/退勤時間を調べ、それらの最小値/最大値を調べて出力します。
発展編1までのテクニックだけで対応しようとすると、コードが長くなりますね。そこは欠点。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画12】 週替りカレンダーに受付可能時間を記入する-ベーシック - 18分55秒

週替りカレンダーに受付可能時間を記入します。
講師全員がいる時間/いない時間を判定し、その最小値と最大値を算出します。
効率よくこの算出をするには、どのような方針でマクロを書くのか?まずは初心者…というか、抽象的な思考にあまり余裕がない方向け。エクセル関数の力を借りて問題解決しましょう。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画13】 週替りカレンダーに受付可能時間を記入する-アドバンス - 12分16秒

週替りカレンダーに受付可能時間を記入します。
講師全員がいる時間/いない時間を判定し、その最小値と最大値を算出します。
効率よくこの算出をするには、どのような方針でマクロを書くのか?エクセル関数に頼らず、マクロだけでこの処理をやりきるにはどのようにプログラムを書くのか?
ここは、WorksheetFunction の活用方法が見どころです。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画14】 カレンダーに受付可能時間担当者詳細を記入する - 8分56秒

カレンダーへの出力のアレンジアイデアです。
・講師がいる時間帯に○をつける
・各時間帯で、出勤している講師の人数を出力する
・各時間帯で、出勤している講師全員の名前を出力する
等々、前回までに実装に成功したマクロをちょこっと加工してできるアイデアをご紹介します。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画15】 週替りカレンダーに受付可能時間を記入する-祝日に色をつける - 14分59秒

週替りカレンダーで、祝日に色をつけます。
祝日リストから祝日を見つける、シンプルかつパワフルな方法を紹介します。
データの型が原因で起きる問題についての解説もしっかり内容確認してください。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画16】 イラストを挿入する - 6分53秒

画像挿入を行います。
オブジェクト型変数の取扱いで若干高度なノウハウを提示しています。
発展編1講座の「第1章」、「第2章」、「第4章」への理解が問われます。これらの章についてのよい復習にもなるでしょう。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画17】 罫線の色を変更する - 12分11秒

罫線の色変更を行います。
オブジェクト型変数の取扱いで若干高度なノウハウを提示しています。
Bordersコレクションの取り扱い方がキモです。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画18】 Functionプロシージャを使ったブラッシュアップ(その1) - 11分39秒

プログラム内で冗長になっている箇所を、Functionプロシージャを使って可読性、メンテナンス性高いマクロに書き換えます。
まずは、長たらしくて似たようなコードが4回くり返されている部分にメス。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画19】 Functionプロシージャを使ったブラッシュアップ(その2) - 16分44秒

プログラム内で冗長になっている箇所を、Functionプロシージャを使って可読性、メンテナンス性の高いマクロに書き換えます。
前回作成したFunctionプロシージャを呼び出すマクロを作り、さらにブラッシュアップします。
これにより、メインのプロシージャ内のループ手前、変数宣言部で5行、ループ内で66行分のコード削減され、可読性の高いたった1行のコードに納まりました。

Functionプロシージャを作るときの手順、考え方等、参考になる箇所も多いかと思います。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画20】 予約受付表を作成する - 10分9秒

予約受付表作成部分を全面リライトします。
まずは、所定の日付についてのみ、テンプレートを生成します。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画21】 生成した予約受付表に値を投入する - 14分53秒

予約受付表作成部分を全面リライトします。
結合セルの取扱にいては落とし穴があるのでそこには要注意です。
その他、可読性のために変数宣言、シートへの参照設定のタイミング揃える、動作テスト時、どこのセル処理するのか?をマクロ実行前に確認する方法等、細かいテクニックも重要です。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画22】 画面更新によるチラつきを避ける2つの方法 - 3分6秒

画面更新によるチラつきを避ける2つの方法を示します。
簡単ですが、効果大です。
ログインすると、詳細情報を取得できます

アカウント新規登録

【動画23】 本講座のまとめ - 10分24秒

本講座全体のまとめです。
今回僕が提示したマクロのようなレベルのものを作れるようになるには?
本動画にて、その具体的な指針を示します。

より良いマクロを書けるようになるための指針として、かなり濃いノウハウを示しています。
地味に重要な動画ですので、何度もくり返し閲覧してください。
ログインすると、詳細情報を取得できます

アカウント新規登録

3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 実践添削事例-パソコンスクールのシフト表・予約フォーム生成マクロ - イントロダクション
    【動画1】 実践添削事例-パソコンスクールのシフト表・予約フォーム生成マクロ - イントロダクション 未習得
  2. 【動画2】 プログラム全体の概況を確認する
    【動画2】 プログラム全体の概況を確認する 未習得
  3. 【動画3】 人が書いたプログラムのインデントの調整と、変数宣言のタイミングについて。
    【動画3】 人が書いたプログラムのインデントの調整と、変数宣言のタイミングについて。 未習得
  4. 【動画4】 インプットボックスの戻り値を検査する
    【動画4】 インプットボックスの戻り値を検査する 未習得
  5. 【動画5】 予約受付表の作り方解説、効率よいステップ実行の方法等
    【動画5】 予約受付表の作り方解説、効率よいステップ実行の方法等 未習得
  6. 【動画6】 モジュールレベル変数宣言のデメリット、イミディエイトウィンドウでのマクロ実行、画像ファイルを変数で参照する
    【動画6】 モジュールレベル変数宣言のデメリット、イミディエイトウィンドウでのマクロ実行、画像ファイルを変数で参照する 未習得
  7. 【動画7】 ここまでのふりかえり、「デバッグ→コンパイル」、画面のチラつき防止
    【動画7】 ここまでのふりかえり、「デバッグ→コンパイル」、画面のチラつき防止 未習得
  8. 【動画8】 DPRに基づいたリライト。R→D、D→R
    【動画8】 DPRに基づいたリライト。R→D、D→R 未習得
  9. 【動画9】 週替りカレンダーを作る
    【動画9】 週替りカレンダーを作る 未習得
  10. 【動画10】 週替りカレンダーに担当者情報を記入する
    【動画10】 週替りカレンダーに担当者情報を記入する 未習得
  11. 【動画11】 週替りカレンダーに受付可能時間を記入する-ベタな方法
    【動画11】 週替りカレンダーに受付可能時間を記入する-ベタな方法 未習得
  12. 【動画12】 週替りカレンダーに受付可能時間を記入する-ベーシック
    【動画12】 週替りカレンダーに受付可能時間を記入する-ベーシック 未習得
  13. 【動画13】 週替りカレンダーに受付可能時間を記入する-アドバンス
    【動画13】 週替りカレンダーに受付可能時間を記入する-アドバンス 未習得
  14. 【動画14】 カレンダーに受付可能時間担当者詳細を記入する
    【動画14】 カレンダーに受付可能時間担当者詳細を記入する 未習得
  15. 【動画15】 週替りカレンダーに受付可能時間を記入する-祝日に色をつける
    【動画15】 週替りカレンダーに受付可能時間を記入する-祝日に色をつける 未習得
  16. 【動画16】 イラストを挿入する
    【動画16】 イラストを挿入する 未習得
  17. 【動画17】 罫線の色を変更する
    【動画17】 罫線の色を変更する 未習得
  18. 【動画18】 Functionプロシージャを使ったブラッシュアップ(その1)
    【動画18】 Functionプロシージャを使ったブラッシュアップ(その1) 未習得
  19. 【動画19】 Functionプロシージャを使ったブラッシュアップ(その2)
    【動画19】 Functionプロシージャを使ったブラッシュアップ(その2) 未習得
  20. 【動画20】 予約受付表を作成する
    【動画20】 予約受付表を作成する 未習得
  21. 【動画21】 生成した予約受付表に値を投入する
    【動画21】 生成した予約受付表に値を投入する 未習得
  22. 【動画22】 画面更新によるチラつきを避ける2つの方法
    【動画22】 画面更新によるチラつきを避ける2つの方法 未習得
  23. 【動画23】 本講座のまとめ
    【動画23】 本講座のまとめ 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ