我已经阅读并应用了在类似主题上发现的解决方案,但在我的情况下似乎没有任何效果。
因此,我想将变量从Module1的一个子元素传递给用户窗体。这是一个名为“provinceSugg”的字符串。
这是我的代码的相关部分:
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/我的subs调用的MsgBox中显示了ProvinceSugg的内容(因此有一个provinceSugg,它不是一个空变量)。
2/从用户窗体调用的MsgBox为空(因此,传递值失败),并且在运行“sMain.Range(“J6”)。Value = provinceSugg“时出现类似“Error 424 Object Required”的错误,我的程序崩溃了(所以变量无法传递到用户表单)。
我尝试了在论坛和此处找到的所有内容(以不同的方式表明provinceSugg是公共(public)变量,但仍然崩溃...)。
在此先感谢您的帮助 !
最佳答案
您将能够在可由模块设置的用户窗体内创建公共(public)变量。
这些变量只能在用户窗体加载时访问。
在用户窗体中,声明两个对象的公共(public)变量。
Public sMain As Worksheet
Public provinceSugg as string
Private Sub userformBtn1_Click()
MsgBox provinceSugg
sMain.Range("J6").Value = provinceSugg
End Sub
在模块中,您可以评估这两个变量。
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
关于Excel-VBA : pass variable from Sub to Userform,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17288997/