我有一个userform定义为" SingleListForm"。 我有一个名为" loadSingleListForm(ID As Double)" 我试图将变量传递给表单,我正在以loadSingleListForm基于ID设置表单的方式实现它,基本上重用一个表单来显示列表框中变量源的变量数据。
但是从表单外部调用标准的Intersect(Worksheet_SelectionChange)这两个选项可以编译但不起作用。
Application.Run "SingleListForm.loadSingleListForm", ID 'ID already declared and assigned
这不起作用
Call ActiveWorkbook.UserForm("SingleListForm").loadSingleListForm(ID)
说UserForm我也试过SingleListForm。 这里的运行时错误是:
我努力不在这里使用全局变量传递给表单。 也许我应该去初始化并尝试一些东西。 我试图将变量传递给表单,然后当然根据此案例设置表单,然后显示表单。你不能通过节目传递,所以你必须找到另一种设置方式。
我刚刚意识到我之前没有从表单外部调用过userform私有函数,但是我一直在使用模块。第一种情况适用于该情况。
干杯, -WWC
答案 0 :(得分:2)
更好的方法是向表单声明属性。在表单的模块中输入
Option Explicit
Private myID as double
Property Set ID(i as double)
myID = i
End Property
然后你的功能
Private Sub loadSingleListForm()
can refer to myID with in it's code
从您使用的外部模块中使用
Load SingleListForm
SingleListForm.ID = ID 'ID variable already declared
答案 1 :(得分:0)
将表单中的sub声明为Public Public Sub loadSingleListForm(ID As Double)
,然后将其称为SingleListForm.loadSingleListForm ID
答案 2 :(得分:0)
只是为了掩盖这一点。空工作簿,一个按钮。 该按钮以只打开消息框的方式调用私有函数。测试概念在这里。 这就是:
不能工作:
UserForm1.you_made_it
找不到编译,方法或数据成员时出错 如果是这样的话:
With ThisWorkbook
UserForm1.you_made_it
End With
然后试试这个:
Application.Run "UserForm1.you_made_it"
错误:无法运行宏。 。 。 。
首先发表评论:
ActiveWorkbook.UserForm("UserForm1").you_made_it
错误:对象不支持此属性或方法
所以这是上面的赢家。不确定我是否想要公开但它有效。 没有解决如何在表单中使用私有成员,但它会得到编码。
Public Sub you_made_it()
MsgBox ("you made it")
End Sub
到目前为止: 1)将私有移动到模块然后调用它 2)使函数公共,它的工作原理
谢谢你, -WWC