MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 12/13 おすすめ情報に 『 SES/派遣事業者専用統合ビジネスクラウドサービス 「Cloud Staff」のクラウドサービス情報開示認定取得のお知らせ 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


ExcelVBAでの設計における事前準備
profile-img
投稿者: thirumaさん
投稿日:2019/07/31 13:30
更新日:
like-img
分類
技術
テクノロジー
Windows系サーバ
キャリア
運用・保守 / テクニカルサポート / 構築 / 設計 / PL / PM
投稿内容

ExcelVBAにおいて簡単で短いコードを開発する際は頭の中で実現方法を整理しやすいです。

しかし、何百行以上にもなるシステムになると整理が煩雑になりがちです。そのようなときのために事前準備段階からの考え方を紹介します。


設計は、要望に対して何を、どのように実現するか考え、決定する工程です。

その際にコードが大量になると整理が煩雑・複雑化していきます。

考え方として、システムは

・インプット(入力・入力するデータ)

・プロセス(入力した情報の処理)

・アウトプット(出力・出力されたデータ)

の3つで構成されていることが多くあります。




ExcelVBAの場合、インプット・プロセス・アウトプットを考える際に、インプットおよびアウトプットが

ExcelシートまたはExcelワークブックであることが多いため、設計が進めやすいと考えられます。


つまり、システムを設計するにあたり、インプットとアウトプットに対応するExcelシートまたはExcelワークブックをサンプルやテンプレートとして準備しておくことにより、システムの全体像が見えてきます。

そのため、インプット・アウトプットを別資料で明文化する必要はありません。インプット・アウトプットがExcelでない場合のみ、明文化すれば良いということになります。

そして、インプットとアウトプットが先に決まれば、プロセスはおのずとついてきます。


もし、大規模のシステムを設計するとなった場合においてもインプット・プロセス・アウトプットの考えを

用いることができます。しかし、あまりにも大規模なシステムの場合、プロセスを一気に考えるは困難な作業となります。また、漏れなどが起きやすく、あまり薦められるものではありません。

そのようなときは、インプット・プロセス・アウトプットを細分化しましょう。

これにより、インプット・プロセス・アウトプットについて、何を、どうするものなのか、を明確に
しやすいサイズにします。そして、細分化したにしたインプット・プロセス・アウトプットについても、
インプットやアウトプットがExcelであれば、サンプルやテンプレートを作成していきます。
 そうすることにより、その間のプロセスでやるべきことがおのずと決定するため、順次コード化していきます。



例として、請求書を作成する際のシステムについて考えていきたいと思います。

・インプット:取引先・請求内容・入金日などのデータ

・プロセス:請求金額の計算や請求書へのデータ転記などの処理

・アウトプット:出力された請求書


プロセスには、いくつかの処理があります。

その中から、品目単位の請求金額の計算を細分化した下位のインプット・プロセス・アウトプットとして取り出すと、次のようになります。

・インプット:単価や個数などのデータ

・プロセス:単価×個数の計算処理

・アウトプット:プロセスで計算処理した結果、導き出された結果

ここまで細分化されると、コード化も容易になってきます。


要点

・システムのインプット・プロセス・アウトプットを定義する

・大きなシステムの場合、インプット・プロセス・アウトプットを細分化する

この繰り返しを行うことで、ひとつひとつは手におえるシステムとなります。


今回はExcelVBAにおける設計段階での事前準備の考え方について紹介いたしました。

あくまで考え方の一つとして捉えていただければ幸いです。

ご覧いただき、ありがとうございました。

■参考元

https://www.atmarkit.co.jp/ait/articles/1712/01/news148_2.html

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3