Ich versuche, den Wert einer öffentlich deklarierten Variablen von einem Benutzerformular an ein Modul zurückzugeben, in dem der Code anfänglich gestartet wurde. Ich kann den Wert der Variable in dem Benutzerformular drucken aber es wird nicht beibehalten, wenn der Code zu dem Startmodul zurückspringt. Option Explicit ist auf beiden Seiten deklariert, und ich deklarierte auch die einzelne Variable (ignorieren Sie die var2 - var6, wie sie nicht verwendet werden, bis ich dieses singuläre Problem beheben).Excel VBA - Öffentliche Variable, die nicht zwischen Modulen übergeben wird
Der Code-Pfad beginnt im ersten Abschnitt unten, springt zum Benutzerformular bei "StatSelection.Show" und springt dann am Ende des Benutzerformulars zurück. Der erste debug.print stellt die Variable, aber der zweiter ist leer ..
Der Hauptcode lautet:
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
Die Userform ist:
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
Ja das hat es funktioniert! – sbagnato
@sbagnato Schön, dass es funktioniert hat. Bitte nehmen Sie sich eine Minute Zeit, um die Antwort zu akzeptieren, um Ihre Frage als gelöst zu markieren. – sktneer
Noch besser wäre es, nur var1 in Userform erklären und wie so verwenden: Mit StartSelection .Show Msgbox .Var1 ENd Mit – jkpieterse