すぐに役立つエクセルVBAマクロ集 - すぐマク
Excel VBA Macro
FAQ
検索用語を入力
検索フォームを送信
Web
サイト内
Home
|
What's New!
|
Gallery
|
Introduction
|
Service
|
Profile
500連発・組み方講座フォロー
Big
Color
Pallet
[広告]
Excel VBA Macro
● 開始終了
● ブックシート
● 画面制御
● 行列操作
● セル制御
● 範囲選択
● クリア
● 値の操作
● コピー
● メッセージ
● 印刷
● コントロール 1
● コントロール 2
● フロー制御
● その他
● サンプル
● 関数など
● 引数・定数など
Excel DownLoad
● フリーウェア
● Excel Macro分
● Excel FAQ分
© 1997 - 2007
Yoshioh Nagai.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ その他 ・ FAQ
消費者金融業の貸付、入金、集計処理のできるVBAを作るには?
Question
5.6 その他
消費者金融業の貸付、入金、集計処理のできるVBAを作りたいのですが、条件判断が多岐にわたり、どこからどう作ればいいのか皆目、見当も付きません。仕事の流れは下記のとおりで、マクロでやってみたいと考えています。
1) 新規契約は、顧客コード、氏名など約55の項目についてダイヤログボックスから入力をします。この顧客コードをsheet名にして、新規客が増える度にsheetが増えていくように。
2) 入金処理は、顧客コード、または氏名でsheetを開き入金日、入金額を入力。
残高が0になる場合は取引経過をすべてコピーし同じsheet上の右の方に張り付け、次の作業の選択に移る。このとき元の表はそのままにしておく。
3) 貸付処理も顧客コード、または氏名でsheetを開く。
A) 残高がある場合、経過利息と残高を合計してダイアログボックスで表示し、そこに新たな貸付金額を入力すると差し引き金額が表示されるようにし、OKを押すと 2)の残高が0になる場合の処理をしてから表のいらない部分を消し、日付と貸付金額が表に入るように。
B) 残高が0の場合は、表のいらない部分を消し日付と貸付金額が表にはいるように
4) 日計処理は1) 2) 3)の処理をするごとに(3の処理のAの場合は入金と貸付の2回の処理) それぞれ1行に記載していく。
1日の処理の終了後、月締月末処理に合計欄を複写して、表をクリアする。
常に下段に、前日貸付残高、前日現金残、本日入金額、本日入金利息、本日入金元金、本日貸付金、総貸付残高、支払経費合計、本日現金残のように現状を反映させる。
5) 経費処理は1カ月分順次下へ追加して記入。常に4)の表の支払経費合計に反映させる
6) 月締月末処理は日計表の合計欄をコピーしてくる。
これらを作る上で、どこから作って行くべきかなど、お教えいただきながら作り方の勉強もしたいと考えております。
ご協力願えますでしょうか?
Answer
Copyright (C) 1998.5.19 Yoshioh Nagai
あなたが作りたいと思ってみえる物は大体解かりました。ご自分がやりたい事を、しっかりと押さえてみえますね。
仕事の流れ、入力項目もきちんと網羅されていますので、システム化する場合の重要ポイントが掴みやすいです。
「どこから作って行くべきか・・・作り方の勉強もしたい」とありましたので、一部分をサンプル的に作ってみました。
パソコンのCドライ ブの任意のフォルダにダウンロードしてから、エクスプローラでみつけてダブルクリックすれば自己解凍します。
ダウンロードは こちら
からできます。
以下の説明はダウンロードしたサンプル画面を見ながら読んでいただくと、わかりやすいと思います。
----- [基本設計について] ----------
サンプルの中の「台帳DB.xls」を開いてください。
「新規契約」の入力項目が55フィールドあります。これは基本設計の重要ポイントです。
「DB」シートには新規契約の55項目がA列からBC列まで、データも仮に入力してあります。
----- [入力方法 A] ---------------
「フォーム可能」シートは、A列からAF列まで、32フィールドです。
メニューバーのデータから、フォームをクリックすると、画面にダイアログボックスが映ります。
一方、「フォーム不可能」シートは、A列からAG列まで、33フィールドです。同様にクリックして行くと「データフォームに設定されているフィールドが多すぎます」とエラーメッセージが映ります。
よって、新規契約を入力するためには、このダイアログボックスは使えないのではないでしょうか。
----- [入力方法 B] ---------------
ダイアログシートにダイアログボックスを自分で作る方法があります。
データを入力するためにはエディットボックスを使ったデザインになると思います。 しかし、エディットボックスで入力された値をワークシートに反映させたり、その逆をしたりすることは、不可能ではないですが相当複雑なマクロとコントロールを、 55項目の1つ1つに作らなければならず困難かと思います。
----- [入力方法 C] ---------------
入出力用のシートと、データベース用のシートを別に作る方法です。
サンプルの中にある金融業務MENU.xlsをクリックして起動してください(マクロを有効にして)。
映ったメニュー画面は「すぐに役立つエクセルVBAマクロ集」に掲載されている「業務メニュー」を活用したものです。
入金ボタンを押すとコードナンバーを聞いてきますから、1002から1022の範囲内で入力してみてください。
(試作品につき存在しないコードナンバーを入力すると動作保証できません)
「OK」ボタンを押すと、そのコードのデータを台帳DB.xlsから抜き出して、金融業務用.xlsの台帳シート(下図)に反映し、画面に表示してマクロの実行が終ります。そして、入力、修正が可能になります。
入力、修正した後に反映ボタンを押すと、データをデータベースへ反映することにします。
ダウンロードしたシートにあるボタンを押すと動作します。試してみてください(試作品につきデータは書きかえられません)。検索ボタン、メニューボタン、終了ボタンも試してみてください。
以上のとおり、入力方法とデータの持ち方が最大のポイントと考えられます。
あなたがイメージしてみえる1顧客1シート方式とは随分違った姿ですが、顧客の数だけシートを作る設計にすると、パソコンのメモリ容量により作れるシートの枚数が制約されますし、処理速度も遅くなるでしょう。
ファイルすべき顧客数(過去、現在、未来の累積件数)にもよりますが、避けたほうが良いのではないでしょうか。
あなたのお考えの「取り引き経過を同じシートの右の方に張り付け」ておけば、その顧客のシートを開けば、すべての内容が見れるという狙いは、システム設計の重要ポイントとして他の方法で実現するようにしては、いかがでしょうか。
例えば、「台帳」シートの項目は実際にはもっと増えるとすれば、その画面に取引経過なども一緒に映すことも可能かと思います。