VBA在userform内部调用私有函数

时间:2017-12-04 18:59:14

标签: excel vba forms excel-vba

我有一个userform定义为" SingleListForm"。 我有一个名为" loadSingleListForm(ID As Double)" 我试图将变量传递给表单,我正在以loadSingleListForm基于ID设置表单的方式实现它,基本上重用一个表单来显示列表框中变量源的变量数据。

但是从表单外部调用标准的Intersect(Worksheet_SelectionChange)这两个选项可以编译但不起作用。

Application.Run "SingleListForm.loadSingleListForm", ID 'ID already declared and assigned

VBA runtime error

这不起作用

Call ActiveWorkbook.UserForm("SingleListForm").loadSingleListForm(ID)

说UserForm我也试过SingleListForm。 这里的运行时错误是:

error2

我努力不在这里使用全局变量传递给表单。 也许我应该去初始化并尝试一些东西。 我试图将变量传递给表单,然后当然根据此案例设置表单,然后显示表单。你不能通过节目传递,所以你必须找到另一种设置方式。

我刚刚意识到我之前没有从表单外部调用过userform私有函数,但是我一直在使用模块。第一种情况适用于该情况。

干杯, -WWC

3 个答案:

答案 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)

只是为了掩盖这一点。空工作簿,一个按钮。 该按钮以只打开消息框的方式调用私有函数。测试概念在这里。 这就是: enter image description here

不能工作:

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