• ベストアンサー

サブルーチンの方法

今までExcelシートで行っていた 1週間の各曜日毎の作業時間の計算を、VBで行う画面を作成しています。 画面イメージとしては下記のような感じです。 【】はテキストボックスで、 Excelのセルのような扱いをしています。 画面入力箇所に数値を入れて、 lostfocusで各テキストボックスを抜けると、 計算結果出力箇所に出力されます。 画面入力箇所の数値を変更したら、再計算されます。 (数値の妥当性チェック等は、説明では省略します) 規定時間【(1)規定時間(画面入力箇所)】 午前の作業時間【from(画面入力箇所)】~【to(画面入力箇所)】= 【(2)to-fromの時間(計算結果出力箇所)】 午後の作業時間【from(画面入力箇所)】~【to(画面入力箇所)】= 【(3)to-fromの時間(計算結果出力箇所】 1日の作業時間【((2)+(3))-(1)(計算結果出力箇所)】 これを7日分作ると、 変数が沢山になってしまうので、 サブルーチン化しようと思っています。 イマイチうまく出来ないので、 アドバイス、ソース等をお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yuu200
  • ベストアンサー率20% (5/24)
回答No.3

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

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.4

さて サブルーチンとするやり方ですけど、 テキストボックスは インデックス化して、番号を与えただけで どのテキストボックスかわかるようにしましょう。 また、サブルーチンの中では、なるべくグルーバル変数を使わないようにするなどの配慮も必要です。 サブルーチンの中で使う変数は、サブルーチン内で宣言するものなんです。 あと、それを7日分作ると大変とありますが、まず 1日分は できたのでしょうか? 1日分が出来ているのであれば、それをサブルーチン化することは たやすいことですよ。 1日分の作り方ができないのか、それとも 1日分は 出来てるが、それをサブルーチン化するのが できないのか どちらか 分かりませんからね。

usi-iti
質問者

お礼

>回答者の皆様 ありがとうございました。

すると、全ての回答が全文表示されます。
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

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

すると、全ての回答が全文表示されます。
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

変数がたくさんになってしまうからサブルーチン化しようという考え自体、おかしいです。 サブルーチン化するのは、同じ処理を何度も記述しなくていいようにするためです。 変数が増えるならば、配列を使用すべきです。

usi-iti
質問者

お礼

>変数が増えるならば、配列を使用すべきです。 ご指摘の通り、同じ処理を 何度も書かなくて良いように サブルーチン化しようと思っています。 その辺が認識不足でした。

すると、全ての回答が全文表示されます。

関連するQ&A