VBA在一个用户表单中调用一个私有函数
我有一个用户窗体定义为“SingleListForm”。 我有一个私人子名为“loadSingleListForm(ID为双)”我试图将一个variables传递到窗体,我正在实施它的方式loadSingleListForm将设置基于ID的forms,基本上重新使用一种forms在列表框中显示来自variables源的可变数据。
但是从窗体外部(Worksheet_SelectionChange)调用一个标准的相交这两个选项编译,但不工作。
Application.Run "SingleListForm.loadSingleListForm", ID 'ID already declared and assigned
这也不pipe用
Call ActiveWorkbook.UserForm("SingleListForm").loadSingleListForm(ID)
它说UserForm我也试过SingleListForm。 这里的运行时错误是:
我正在努力不要在这里使用全局variables传递给窗体。 也许我应该去初始化并尝试一些东西。 我试图将该variables传递给窗体,然后根据这种情况设置窗体,然后显示窗体。 你不能通过show,所以你必须find另一种方式来设置。
我刚才意识到我之前没有从窗体外部调用过一个用户窗体的私有函数,但是我总是用模块来完成它。 第一起案件在这种情况下起作用。
欢呼声,-WWC
更好的方法是将声明一个属性的forms。 在表单的模块中input
Option Explicit Private myID as double Property Set ID(i as double) myID = i End Property
然后你的function
Private Sub loadSingleListForm() can refer to myID with in it's code
从你使用的外部模块中使用它
Load SingleListForm SingleListForm.ID = ID 'ID variable already declared
声明你的子表单为Public Public Sub loadSingleListForm(ID As Double)
,然后像这样调用它SingleListForm.loadSingleListForm ID
只是为了掩盖这一点。 空的工作簿,一个button。 该button以除了打开消息框之外什么也不做的forms调用私有函数。 这里testing的概念。 这是所有的:
不起作用:
UserForm1.you_made_it
编译,方法或数据成员找不到错误如果这样做:
With ThisWorkbook UserForm1.you_made_it End With
然后试试这个:
Application.Run "UserForm1.you_made_it"
错误:无法运行macros。 。 。 。
尝试从第一个评论:
ActiveWorkbook.UserForm("UserForm1").you_made_it
错误:对象不支持此属性或方法
所以这是上面的赢家 不知道我想去公共,但它的作品。 没有解决如何使用私人会员的forms,但它得到了前进的编码。
Public Sub you_made_it() MsgBox ("you made it") End Sub
到目前为止:1)将私人移动到一个模块,然后调用它2)使function公开和它的工作
谢谢,-WWC