No.2ベストアンサー
- 回答日時:
No1さんがお忙しいようなので。
。(^^;;;変数の宣言は「標準モジュール」を追加してそこでせよ、ということです。
'------------------------------------
標準モジュールの宣言セクション
'------------------------------------
Option Explicit
Public NUM As Long
'------------------------------------
Form1
'------------------------------------
Private Sub Command1_Click()
NUM = 1
Form2.Show
End Sub
'------------------------------------
Form2
'------------------------------------
Private Sub Form_Load()
MsgBox NUM
End Sub
'-------------------------------------
●質問者のように、Form1で変数宣言したら
Form2でそれを使うときには、変数の前に、Form1を付加すればOKです。
Form1で変数宣言した場合
'------------------------------------
Form1 (変更なし)
'------------------------------------
Option Explicit
Public NUM As Long
Private Sub Command1_Click()
NUM = 1
Form2.Show
End Sub
'------------------------------------
Form2 (変更あり)
'------------------------------------
Private Sub Form_Load()
MsgBox Form1.NUM '●変数の前に,Form1を付加する
End Sub
'-------------------------------------
以上。
No.3
- 回答日時:
変数は、その通用範囲(スコープ)によって局所(ローカル)変数、広域(グローバル)変数とに大別されます。
プロシージャ内で宣言された変数は、プロシージャ内でしか通用しません。
また、フォームモジュールの冒頭で宣言された変数はそのモジュール内でしか通用しません。
これに対し、標準モジュールで Public という宣言子を使って宣言した変数は広域に通用します。
フォームモジュールでもプロシージャでも、かかる広域変数は参照し利用できます。
通常、このような広域変数の宣言を担当する標準モジュールは、[広域変数.BAS]などの名称を付けます。
もちろん、[グローバル.BAS]でも何でも構いません。
さて、広域変数を宣言する標準モジュールを追加するとプロジェクトウインドウは次のようになります。
標準モジュール
|
+-- Module1(Module1)
これじゃ、広域変数の宣言を担当している標準モジュールとは視認しづらいです。
そこで、
プロパティ-モジュール名=広域変数
と設定します。
標準モジュール
|
+-- 広域変数(広域変数)
この標準モジュールを保存すると表示は次のように変わります。
標準モジュール
|
+-- 広域変数(広域変数.bas)
この手続き全般を、これは示唆しています。
No.1
- 回答日時:
標準モジュール
|
+-- 広域変数(広域変数.bas)
Option Explicit
Public NUM As Long
Form1モジュール
Private Sub Command1_Click()
NUM = 1
Form2.Show
End Sub
Form2モジュール
Private Sub Form_Load()
MsgBox NUM
End Sub
これが一つの基本形です。
この回答への補足
早速の回答、ありがとうございます。アドバイスを参考にして、
Form1に
Option Explicit
Public NUM As Long
Private Sub Command1_Click()
NUM = 1
Form2.Show
End Sub
Form2に
Private Sub Form_Load()
MsgBox NUM
End Sub
を記述してみましたが、コマンドボタンを押し、Form2を開くと「変数が定義されていません」というエラーが出てしまいます。
Form2に「Public NUM As Long」を記述し実行すると、メッセージボックスは表示されるのですが、値が"0"になってしまいます。
何か根本的に間違っている部分があるのでしょうか…
標準モジュール
|
+-- 広域変数(広域変数.bas)
は何を表しているのですか?(広域変数.bas)は初めて聞く言葉です。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- PHP php 確認表示画面で値をSESSIONから取り出す理由の解釈は正しいでしょうか? 1 2023/06/09 17:39
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- その他(プログラミング・Web制作) 入力フォームへ、データを自動的に入力するプログラム。どうやって作る? 4 2023/01/16 10:24
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- その他(プログラミング・Web制作) Googleフォーム・複数人の申し込みをまとめて受け付けたい 1 2023/01/09 13:36
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- PHP $_SESSIONに渡した後はそのまま使っても問題ありませんか? 3 2022/11/08 22:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAでリンク切れをチェッ...
-
モジュールの最大数はいくつな...
-
Excel VBA 定義されたプロージ...
-
VBAで別モジュールへの変数の受...
-
VBのフォームモジュールと標準...
-
Workbook.BeforeSave イベント...
-
【vba】フォームに書いてあ...
-
Excel VBA 『Call』で呼び出す...
-
Form間の値の渡し方
-
グラフのX,Y座標を取得したい
-
現在アクティブなフォーム名を...
-
ユーザー定義関数をEXCELに常駐...
-
シートモジュールで使う変数を...
-
Excelで時刻になったら知らせて...
-
Visual Basicプログラムのエラ...
-
エクセルVBAでシートモジュール...
-
標準モジュール Public mOnTime...
-
モジュールとは何ですか
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでリンク切れをチェッ...
-
ユーザー定義関数に#NAME?が返...
-
VBAで別モジュールへの変数の受...
-
VBでグローバル変数を宣言するには
-
エクセルVBAでシートモジュール...
-
VBA This Workbookモジュール...
-
モジュールの最大数はいくつな...
-
Excel VBAで、ユーザーフォーム...
-
VBAで旧字体を異字体に一括で変...
-
Access VBA標準モジュールにつ...
-
VBA モジュールで共通に使う変...
-
'Range'メソッドは失敗しました
-
グラフのX,Y座標を取得したい
-
モジュールとは何ですか
-
Excel VBA 『Call』で呼び出す...
-
プラグイン、ライブラリ、コン...
-
【vba】フォームに書いてあ...
-
モジュールからフォームのボタ...
-
モジュールとクラスの違いって...
-
acwzlibとは?
おすすめ情報