【问题标题】:Late Binding UserForm Functions后期绑定 UserForm 函数
【发布时间】:2014-05-18 20:50:55
【问题描述】:

我有 2 个用户表单:

Userform1
Userform2

它们都具有UpdateFields 函数,每个函数的实现方式不同。 我有第三个函数,它将用户表单作为输入并尝试调用 UpdateField 函数:

Public Sub ThirdFunction(Byref objForm as Form)
   'trying to do this
    objForm.UpdateFields
End Sub

有谁知道如何做到这一点?

【问题讨论】:

  • 将 objForm 类型更改为 Object。 Form 是您的表单继承的基类,因此 Form 不知道您自己的 UpdateFields。
  • 我试过了,没用
  • 好的,我刚刚检查了这个 - 它确实适用于类型为对象(对我而言)。仔细检查 UpdateFields 函数的范围。
  • 你可以使用早期绑定(ByRef objForm as MSForms.UserForm)
  • @DavidZemens 我认为这不会在他的表单上公开任何自定义方法是错误的吗?

标签: ms-access excel vba


【解决方案1】:

以下内容对我有用。你表示它不适合你。你能解释一下我下面的粗略设置有什么不同吗?这将有助于缩小问题范围。

在标准模块中:

Sub UpdateBoth()
    FrmUpdate Form_Table1
    FrmUpdate [Form_Copy Of Table1]
End Sub

Sub FrmUpdate(frm As Object)
    frm.UpdateFields
End Sub

在表单的代码隐藏(称为 Form_Table1)中:

Public Function UpdateFields()
    Debug.Print "Form 1 Update"
End Function

在另一个表单的代码隐藏中(称为 [Form_Copy of Table1]):

Public Function UpdateFields()
    Debug.Print "Form 2 Update"
End Function

输出: 表格 1 更新 表 2 更新

【讨论】:

  • 它有效,谢谢。我将功能设置为私有 :)
  • @VBAProgrammer 我一直这样做;)
猜你喜欢
  • 1970-01-01
  • 2015-09-19
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 2016-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多