プロが教えるわが家の防犯対策術!

今までExcelシートで行っていた
1週間の各曜日毎の作業時間の計算を、VBで行う画面を作成しています。
画面イメージとしては下記のような感じです。

【】はテキストボックスで、
Excelのセルのような扱いをしています。
画面入力箇所に数値を入れて、
lostfocusで各テキストボックスを抜けると、
計算結果出力箇所に出力されます。
画面入力箇所の数値を変更したら、再計算されます。
(数値の妥当性チェック等は、説明では省略します)

規定時間【(1)規定時間(画面入力箇所)】

午前の作業時間【from(画面入力箇所)】~【to(画面入力箇所)】=
【(2)to-fromの時間(計算結果出力箇所)】

午後の作業時間【from(画面入力箇所)】~【to(画面入力箇所)】=
【(3)to-fromの時間(計算結果出力箇所】

1日の作業時間【((2)+(3))-(1)(計算結果出力箇所)】

これを7日分作ると、
変数が沢山になってしまうので、
サブルーチン化しようと思っています。
イマイチうまく出来ないので、
アドバイス、ソース等をお願い致します。

A 回答 (4件)

変数がたくさんになってしまうからサブルーチン化しようという考え自体、おかしいです。



サブルーチン化するのは、同じ処理を何度も記述しなくていいようにするためです。

変数が増えるならば、配列を使用すべきです。
    • good
    • 0
この回答へのお礼

>変数が増えるならば、配列を使用すべきです。

ご指摘の通り、同じ処理を
何度も書かなくて良いように
サブルーチン化しようと思っています。
その辺が認識不足でした。

お礼日時:2002/11/06 11:36

こんにちは。

maruru01です。

No.1の人の言う通り、配列を使用するなどしましょう。
または、ユーザー定義型を使用するのもいいでしょう。
そして、配列なりユーザー定義型なりを、引数として渡して、作業時間を計算して返すFunctionプロシージャを作成すればいいのではないでしょうか。
    • good
    • 0

画面のテキストボックスを配列にし、


LostFocus時、そのテキストボックスのindexを引数にした
サブルーチン(計算部分)を作ればいいと思います。
    • good
    • 0

さて サブルーチンとするやり方ですけど、


テキストボックスは インデックス化して、番号を与えただけで どのテキストボックスかわかるようにしましょう。
また、サブルーチンの中では、なるべくグルーバル変数を使わないようにするなどの配慮も必要です。
サブルーチンの中で使う変数は、サブルーチン内で宣言するものなんです。

あと、それを7日分作ると大変とありますが、まず 1日分は できたのでしょうか?
1日分が出来ているのであれば、それをサブルーチン化することは たやすいことですよ。
1日分の作り方ができないのか、それとも 1日分は 出来てるが、それをサブルーチン化するのが できないのか どちらか 分かりませんからね。
    • good
    • 0
この回答へのお礼

>回答者の皆様

ありがとうございました。

お礼日時:2002/11/06 21:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!