こんばんは!
プロシージャ間での変数の取り扱いについて読んでいてよく分からないので教えて頂きたいです。
現在、ユーザーフォームにて下記のコードを記述していますが、テキストボックス1に表示するiの値を初めは50として、正解ならiに1を加算、不正解ならi から1を減算して、テキストボックス1の内容を更新するようにしたいのですが、どのように記述すればよろしいでしょうか。
-----------------------------------------------
private sub userform_initialize()
Textbox1 = int(i)
end sub
-----------------------------------------------
private sub commandbutton1_click()
If 条件式 then
"正解"
else
"不正解"
end if
call userform_initialize()
end sub
-------------------------------------------------
commandbutton2 以降省略
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ソースをみてると、
private sub userform_initialize()
Textbox1 = int(i)
end sub
より、1回目にuserformを開けたとき50とし、
commandbutton1をclickしたときに
userform_initialize()を呼び出して、49か51かを表示したいと推測できます。
ということで、最初に50をセットできる場所がありません。
1回目にuserformを開けたとき50としようとすると
userform_initializeで
i=50
とする必要がありますが、
commandbutton1をclickしたときに
userform_initialize()を呼び出してiを49か51にしたはずなのに
50に置き換えられてしまいます。
public i as integer
-----------------------------------------------
private sub userform_initialize()
i = 50
call displayTextbox1()
end sub
-----------------------------------------------
private sub commandbutton1_click()
If 条件式 then
"正解"
i=i+1
else
"不正解"
i=i-1
end if
'call userform_initialize()
call displayTextbox1()
end sub
-------------------------------------------------
private sub displayTextbox1()
Textbox1 = int(i)
end sub
というふうに書かないといけません。
そもそも、
userform_initialize()
のような、イベントが発生したときに動作するサブルーチンを他から呼び出すのは
お薦めできません。
(いくつかの事情によりやむを得ず書く場合がないとはいえず、
やってはいけないとまでは言いませんが。)
No.2
- 回答日時:
これはVBAですよね?
普通にプロシージャの外で変数を定義すればいいのでは。
Option Explict
Private i as Integer ←これ
-----------------------------------------------
private sub userform_initialize()
i = 50
Textbox1.Value = i
end sub
-----------------------------------------------
private sub commandbutton1_click()
If 条件式 then
i = i + 1
else
i = i - 1
end if
Textbox1.Value = i
end sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) Excel VBA ユーザーフォーム 複数のユーザーフォームの閉じ方。 2 2022/04/27 11:29
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) VBAユーザーフォームでテキストボックスについて。 1 2022/05/31 12:23
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA public変数はどのようなこ...
-
VB6.0の正規表現を使って、文字...
-
C言語のサフィックスについて
-
C#のループでtextboxに値を入れ...
-
テキストボックスを空白にする方法
-
Functionの戻り値を配列にした...
-
【VB6.0】 あるフォームから他...
-
他のフォームから別のフォーム...
-
レコードセットにnullの場合
-
エクセルVBAでテキストボッ...
-
検索結果の指定列をリストボッ...
-
文字間の幅の設定
-
VB.NETでのイベントの途中終了
-
VB6でマウスのドラッグで範囲を...
-
TEXTBOXの表示形式の変...
-
ExcelVBAで他のファイル(proje...
-
画像をランダムに表示させたい...
-
リストビューの列ヘッダーの幅...
-
VB6 ドラッグ&ドロップ
-
vba 日本語以外を抽出について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA public変数はどのようなこ...
-
GetNextWindowがDLLファイルUse...
-
演奏記号の・・・・
-
Excel VBA: private sub 内の...
-
サブルーチンの@_とreturn
-
pthread_cond_waitとptherad_co...
-
VB6.0の正規表現を使って、文字...
-
日付の取得VB.NET.では
-
名刺の渡し方って
-
VBA 再帰について
-
プロキシでキャッシュされる/...
-
フォルダ内にさらにフォルダが...
-
slapd再起動時にエラー
-
マクロ 条件式
-
サブドメインのリダイレクトに...
-
ユーザフォームの押下コマンド...
-
他のフォームから別のフォーム...
-
C#のループでtextboxに値を入れ...
-
エクセルVBAでテキストボッ...
-
VBAでcallで呼び出したsubを終...
おすすめ情報