Excel – VBA:从Sub传递variables到Userform
我已阅读并应用了类似主题上find的解决scheme,但在我的案例中似乎没有任何工作。
所以,我想从我的Module1的一个子variables传递给一个用户表单。 这是一个名为“provinceSugg”的string。
这是我的代码的相关部分:
Public provinceSugg As String Sub probaCity() [...] If province = "" And city <> "" Then provinceSugg = sCurrent.Cells(p, db_column).Offset(0, 1).Value UserForm2.Label1 = "Do you mean " & city & " in " & provinceSugg & " ?" UserForm2.Label1.TextAlign = fmTextAlignCenter UserForm2.Show Else End If End Sub
然后在我的用户表单代码中:
Private Sub userformBtn1_Click() MsgBox provinceSugg sMain.Range("J6").Value = provinceSugg End Sub
当我运行我的程序时:
1 /我有从我的子集调用的MsgBox显示provinceSugg的内容(所以有一个provinceSugg,它不是一个空的variables)。
2 /从用户窗体调用MsgBox是空的(所以传递值失败),我的程序崩溃时运行“sMain.Range(”J6“)。Value = provinceSugg”类似“错误424对象需要”(所以variables未能传递给用户表单)。
我尝试了所有在论坛和这里find的东西(用不同的方式来表示provinceSugg是一个公共variables,但仍然崩溃)。
在此先感谢您的帮助 !
您将能够在用户窗体中创build可由模块设置的公共variables。
这些variables只能在加载时在Userform中访问。
在用户窗体中,为这两个对象声明公共variables。
Public sMain As Worksheet Public provinceSugg as string Private Sub userformBtn1_Click() MsgBox provinceSugg sMain.Range("J6").Value = provinceSugg End Sub
在模块中,您可以评估这两个variables。
Sub probaCity() [...] If province = "" And city <> "" Then provinceSugg = sCurrent.Cells(p, db_column).Offset(0, 1).Value With UserForm2 .provinceSugg = provinceSugg Set .sMain = sMain .Label1 = "Do you mean " & city & " in " & provinceSugg & " ?" .Label1.TextAlign = fmTextAlignCenter .Show End With End If End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim selectColumn selectColumn= Split(Target.Address(1, 0), "$")(0) Call UserFormStart(selectColumn) End Sub
主模块内部
Public columnSelection As String ... Public Sub UserFormStart(ByVal columnRef As String) 'MsgBox "Debug columnRef=" & columnRef columnSelection = columnRef UserForm1.Show End Sub
用户窗体内部
Private Sub UserForm_Initialize() 'MsgBox "Debug UserForm_Initialize =" & columnSelection ... End Sub
Worksheet_SelectionChange调用columnSelection声明为公共的模块上的一个子,并从UserForm中可见。 我为列参考使用了三个不同的variables,以显示UserForm访问模块的位置。 以上所有的工作和花费了很长时间才find和解决这个问题。 快乐的狩猎伙计