0
公式に宣言された変数の値をユーザーフォームからコードが最初に起動したモジュールに戻そうとしています。変数の値をuserformに出力することはできますが、コードが開始モジュールに戻っても保持されません。 Option Explicitは両側で宣言されていますが、私は単一の変数も宣言しました(var2 - var6は使用しないので無視してください)。Excel VBA - モジュール間でパブリック変数が渡されない
コードパスは、以下の最初のセクションで始まり、 "StatSelection.Show"でユーザーフォームにジャンプし、その後userformサブファイルの最後にジャンプします。
Option Explicit
Public var1 As String
Sub NoNameGame2FirstRoundResults()
'
' NoNameGame Macro
'
'
'Load Round 1 file
Dim r1Name As Variant
Dim nngr1r As Workbook
ChDir "D:\Users\stefan.bagnato\Desktop\No Name Game"
r1Name = Application.GetOpenFilename
If r1Name <> False Then
Set nngr1r = Workbooks.Open(r1Name)
End If
'Load previous week's file
Dim r1rName As Variant
Dim wps As Workbook
ChDir "D:\Users\stefan.bagnato\Desktop\Weekly Performance Summary"
r1rName = Application.GetOpenFilename
If r1rName <> False Then
Set wps = Workbooks.Open(r1rName)
End If
'Create radio buttons to select week 1 stat
StatSelection.Show
'Parse Column B for names, and paste corresponding data in column C
nngr1r.Activate
Debug.Print var1
ActiveWorkbook.Worksheets("Sheet1").Columns(2).Find("Adam").Offset(N, 1) = var1
End Sub
ユーザーフォームがある:
Option Explicit
Public var1 As String
Sub OptionButton1_Click()
Dim wps As Workbook, x As String
For Each wps In Workbooks
If wps.name <> ThisWorkbook.name Then x = wps.name
Next wps
Workbooks(x).Activate
var1 = Format((ActiveWorkbook.Worksheets("Sheet1").Range("F4")), "hh:mm:ss")
var2 = Format((ActiveWorkbook.Worksheets("Sheet1").Range("F5")), "hh:mm:ss")
var3 = Format((ActiveWorkbook.Worksheets("Sheet1").Range("F6")), "hh:mm:ss")
var4 = Format((ActiveWorkbook.Worksheets("Sheet1").Range("F7")), "hh:mm:ss")
var5 = Format((ActiveWorkbook.Worksheets("Sheet1").Range("F9")), "hh:mm:ss")
var6 = Format((ActiveWorkbook.Worksheets("Sheet1").Range("F10")), "hh:mm:ss")
Debug.Print var1
Me.Hide
End Sub
これはうまくいきました! – sbagnato
@sbagnatoうれしいです。あなたの質問にSolvedと印を付けるために、答えを受け入れるのに数分を要してください。 – sktneer
いっそのこと、唯一のユーザーフォームでVAR1を宣言し、そのように使用:StartSelection – jkpieterse