|
▼YOU さん:
おはようございます。
>標準モジュールで、"PUBLIC"で宣言し、設定した値をそのモジュールで呼び出したユーザーフォームで読み取り条件判断しようとさせていますが、どうも標準モジュールで設定した変数の値を読み込んでいないようです。
↑この具体例を提示してください。
ユーザーフォームの構成(中のコントロールの配置の詳細)とかコード内容の提示
だれでもYOU さんが投稿された記述どおりに設定すれば、
この不具合が再現できる記述をお願いします。
さて・・・。
標準モジュールにて、宣言されたPublic変数、
例
標準モジュールに
Public aa as long
と宣言された変数は、ユーザーフォームのモジュールの
どのプロシジャーでも
Private Sub UserForm_Activate()
msgbox aa
End Sub
と一般的な記述で変数の値の取得や設定が出来ます。
*具体例
アクティブシートのセルA1に入力された数値を用いて、
1からセルA1までの総和(ΣA1)を計算して、結果をユーザーフォームに表示する
という仕様のプログラムを考えます。
セルA1が、 10なら 結果は、 55
セルA1が、 20なら 結果は、 210
等など・・。
1 準備
ラベル(Label1)を一つだけ配置したユーザーフォーム(Userform1)を
作成してください。
このUserform1のモジュールに
'================================================================
Private Sub UserForm_Activate()
With Label1
.Width = Me.Width
.Font.Size = 16
.Caption = mes
.AutoSize = True
End With
End Sub
標準モジュールに
'===============================================================
Option Explicit
Public mes As String
'===============================================================
Sub main()
Dim ans As Long
Dim g0 As Long
Dim n As Long
With ActiveSheet
If IsNumeric(.Range("a1").Value) Then
n = .Range("a1").Value
ans = 0
For g0 = 1 To n
ans = ans + g0
Next
mes = "Σ" & n & " = " & ans
Else
mes = "セルA1は、数字ではありません"
End If
UserForm1.Show
End With
End Sub
2操作
アクティブシートのセルA1に適当な数字を入力して
mainを実行してみてください。
指定された数値から、総和を計算し、ユーザーフォームに結果が表示されます。
3結果
このようにPublic宣言した変数は、簡単に他のモジュールで
引用できます。
いえ、扱いが簡単だから、乱用したり、手続きが曖昧な使い方をすると、
もう何がなんだかわからないコードになってしまうのです。
Public変数って、使い方は難しいですよ!!
本当は、続きがありますが、先に本題の
>標準モジュールで、"PUBLIC"で宣言し、設定した値をそのモジュールで呼び出したユーザーフォームで読み取り条件判断しようとさせていますが、どうも標準モジュールで設定した変数の値を読み込んでいないようです。
が解決してからにしましょう。
|
|