重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

フォームで指定したデータを
モジュールに渡し、その結果を
フォームに反映させる処理を作成すると
したら、どのようなVBソースを書けば良いでしょうか?
処理の流れ、方法は以下の通りとなります。


**フォーム***************************

(1):検索する年、月を画面から指定

(6):検索フラグ判定

  フラグが"1"…
  (5)で取得したレコードセットの内容を
  画面に表示する

  フラグが"0"…エラーを表示

***モジュール***************************

(2):DB接続

(3):(1)の年、月から、モジュール内関数を使用し、
  月の最終日を取得

(4):検索用SQL発行((1)と(3)の年月を使用)

(5):検索データ取得判定

  (4)の対象データ(レコードセット)が有…
  検索フラグを"1"にする
  レコードセットの内容は保存する

  (4)の対象データ(レコードセット)が無…
  検索フラグを"0"にする

A 回答 (3件)

>モジュールで行う処理はサブルーチンとして


>扱いたかったのです。
>そうすれば、各イベント毎に同じプログラムを
>書く手間がはぶけると思いまして。
>一般的にはモジュールには書かないんですか?

そういうことなら話はわかりますが、
「フォームとモジュールで変数をやり取り」
みたいに書かれていたのでどうしてかな?と思ったのです。
サブルーチンということなら、フォームの方でそのサブルーチン(関数)を呼び出すので、変数をその関数に渡すとは言いますが、あんまりモジュールに変数を渡すという言い方はしないんですけどね。

ちなみに、私は、そのサブルーチンが特定のフォームでしか使われないなら、フォームモジュールに書きます。(標準モジュールには書きません。)
変数についてもそのフォームでしか使わないなら、そのフォームの宣言部にPrivateで宣言します。
標準モジュールにPublicで使用するのは、基本的には複数のフォーム(やモジュール)で呼び出すサブルーチンとしています。
    • good
    • 0

再びmaruru01です。



例えば、その標準モジュールの宣言部に、

Public FindYear As Long
Public FindMonth As Long
Public flagFind As Boolean

と宣言しておいて、
フォームの方で、

FindYear = 10
FindMonth = 17

とか代入しておき、
標準モジュールの関数に、

最終日 = 最終日取得関数(FindYear, FindMonth)

とか渡せばいいわけです。
この時、関数内で引数として渡した値に変更を加えて、それを反映させたいなら、ByRef(参照渡し)にして、反映させたくないなら、ByVal(値渡し)にすればいいです。
引数を参照するだけなら(普通はこのパターンでしょうが)、どっちでも構いません。(処理スピードが微妙に違うようですが。)
ちなみに、関数の引数にどちらもつけないと、自動的にByRefになります。

あとは、モジュールの方で、

flagFind = 1

とか代入して、フォームの方で、

If flagFind = 1 Then

みたいに参照すればいいですね。

ところで、最終日を取得する関数とかを標準モジュールに書くのはいいとして、何故DBの接続とか、検索用SQL発行とかをわざわざ標準モジュールで行うのでしょうか。
フォームの適当なイベントで行ってはまずいのでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
実践してみます。


>ところで、最終日を取得する関数とかを標準モジュールに書くのはいいとして、何故DBの接続とか、検索用SQL発行とかをわざわざ標準モジュールで行うのでしょうか。

モジュールで行う処理はサブルーチンとして
扱いたかったのです。
そうすれば、各イベント毎に同じプログラムを
書く手間がはぶけると思いまして。
一般的にはモジュールには書かないんですか?

お礼日時:2002/10/17 16:48

こんにちは。

maruru01です。

標準モジュールを用意して、そこにPublicで変数を宣言すれば、プロジェクトのどこからでも参照出来ますが。
ところで、その"モジュール"って何モジュール?
標準モジュールなら、そこの宣言部にPublicで宣言しておけばいいと思いますが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

フォーム⇔モジュール間で
変数のやりとりをするには
byvalやbyrefなどが必要になると思うのですが、
MSDNが壊れていまして、コーディング方法が
よく分からないので質問した訳です。
具体的なコーディングを教えて頂ければ幸いです。

使用モジュールは、標準モジュールです。

お礼日時:2002/10/17 15:28

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