
フォームで指定したデータを
モジュールに渡し、その結果を
フォームに反映させる処理を作成すると
したら、どのようなVBソースを書けば良いでしょうか?
処理の流れ、方法は以下の通りとなります。
**フォーム***************************
(1):検索する年、月を画面から指定
(6):検索フラグ判定
フラグが"1"…
(5)で取得したレコードセットの内容を
画面に表示する
フラグが"0"…エラーを表示
***モジュール***************************
(2):DB接続
(3):(1)の年、月から、モジュール内関数を使用し、
月の最終日を取得
(4):検索用SQL発行((1)と(3)の年月を使用)
(5):検索データ取得判定
(4)の対象データ(レコードセット)が有…
検索フラグを"1"にする
レコードセットの内容は保存する
(4)の対象データ(レコードセット)が無…
検索フラグを"0"にする
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>モジュールで行う処理はサブルーチンとして
>扱いたかったのです。
>そうすれば、各イベント毎に同じプログラムを
>書く手間がはぶけると思いまして。
>一般的にはモジュールには書かないんですか?
そういうことなら話はわかりますが、
「フォームとモジュールで変数をやり取り」
みたいに書かれていたのでどうしてかな?と思ったのです。
サブルーチンということなら、フォームの方でそのサブルーチン(関数)を呼び出すので、変数をその関数に渡すとは言いますが、あんまりモジュールに変数を渡すという言い方はしないんですけどね。
ちなみに、私は、そのサブルーチンが特定のフォームでしか使われないなら、フォームモジュールに書きます。(標準モジュールには書きません。)
変数についてもそのフォームでしか使わないなら、そのフォームの宣言部にPrivateで宣言します。
標準モジュールにPublicで使用するのは、基本的には複数のフォーム(やモジュール)で呼び出すサブルーチンとしています。
No.2
- 回答日時:
再び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発行とかをわざわざ標準モジュールで行うのでしょうか。
フォームの適当なイベントで行ってはまずいのでしょうか。
回答ありがとうございます。
実践してみます。
>ところで、最終日を取得する関数とかを標準モジュールに書くのはいいとして、何故DBの接続とか、検索用SQL発行とかをわざわざ標準モジュールで行うのでしょうか。
モジュールで行う処理はサブルーチンとして
扱いたかったのです。
そうすれば、各イベント毎に同じプログラムを
書く手間がはぶけると思いまして。
一般的にはモジュールには書かないんですか?
No.1
- 回答日時:
こんにちは。
maruru01です。標準モジュールを用意して、そこにPublicで変数を宣言すれば、プロジェクトのどこからでも参照出来ますが。
ところで、その"モジュール"って何モジュール?
標準モジュールなら、そこの宣言部にPublicで宣言しておけばいいと思いますが。
回答ありがとうございます。
フォーム⇔モジュール間で
変数のやりとりをするには
byvalやbyrefなどが必要になると思うのですが、
MSDNが壊れていまして、コーディング方法が
よく分からないので質問した訳です。
具体的なコーディングを教えて頂ければ幸いです。
使用モジュールは、標準モジュールです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
ユーザー定義関数に#NAME?が返...
-
モジュールの最大数はいくつな...
-
VBA モジュールで共通に使う変...
-
ExcelVBA 標準モジュール内関...
-
標準モジュールを削除したい。(...
-
【vba】フォームに書いてあ...
-
Application.OnKey:項目入力中...
-
ExcelVBA:パブリック オブジェ...
-
クラスモジュールについて
-
acwzlibとは?
-
ヘッダー・左メニュー・コンテ...
-
Excel VBAで、ユーザーフォーム...
-
モジュールとクラスの違いって...
-
印刷後メッセージボックスを表...
-
'Range'メソッドは失敗しました
-
初心者です。VB.NETの配布に関...
-
エクセルVBAで標準モジュー...
-
【Excel VBA】標準モジュールに...
-
vba userFormのSubを標準モジュ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでシートモジュール...
-
Excel VBAで、ユーザーフォーム...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
Excel VBA 定義されたプロージ...
-
Excel VBAでリンク切れをチェッ...
-
VBでグローバル変数を宣言するには
-
標準モジュールを削除したい。(...
-
vba userFormのSubを標準モジュ...
-
モジュールからフォームのボタ...
-
モジュールの最大数はいくつな...
-
モジュールとクラスの違いって...
-
【vba】フォームに書いてあ...
-
VBAProjectのモジュ...
-
印刷後メッセージボックスを表...
-
Access VBA標準モジュールにつ...
-
VBAで旧字体を異字体に一括で変...
-
大量の標準モジュールを解放す...
-
Form間の値の渡し方
-
エクセルVBA クラスモジュール...
おすすめ情報