如何在 Access VBA 中声明对 ActiveX“ListView”控件的引用?

Posted

技术标签:

【中文标题】如何在 Access VBA 中声明对 ActiveX“ListView”控件的引用?【英文标题】:How do I declare a reference to an ActiveX "ListView" Control in Access VBA? 【发布时间】:2015-06-25 13:45:54 【问题描述】:

我正在使用 Access 2003。

在“参考”(工具 > 参考 > 浏览...)中,我添加了“Microsoft Windows Common Controls 6.0 (SP6)”(c:\windows\system32\mscomctl.ocx)并创建了/在窗体上插入控件“Microsoft ListView Control 6.0 (SP6)”的实例,并为控件命名为“MyListView”。

我想用一些自定义方法来装饰 MyListView,所以我创建了一个包含成员字段(“lvw”)的类(“DecoratedListView”)。

我希望 'lvw' 指向/引用 MyListView,但我不知道在其声明中使用什么引用类型。重要的是,我还想捕获lvw的ColumnClick事件。

我试过了:

Public WithEvents lvw As Object
Public WithEvents lvw As Control
Public WithEvents lvw As MSComctlLib.ListView.2

当我没有工作时

set lvw = MyForm.MyListView

谁能解释我应该如何创建对现有对象 (MyListView) 的引用 (lvw)?

【问题讨论】:

【参考方案1】:

Access 无法真正处理这类事情。

OnClick 应该在您的 MyForm 上可用,但您无法在属性的“事件”选项卡中看到它。 ActiveX 控件太复杂了。相反,进入代码并在左上角的组合框中选择 MyListView。然后,您将在右上角的组合框中找到扩展的 ActiveX 事件。其中之一是 ColumnClick。

不确定您的全部意图是什么,但如果您想模仿一个孤立的 DecoratedListView 类,则创建一个仅包含 ListView 控件的特殊表单,并将其用作其他表单的子表单。您可以像引用任何其他子窗体控件对象一样从父窗体引用 ListView。通过检查基本上是父表单的 me.parent.name 对象,可以从 listview 子表单运行父特定代码。您甚至可以通过将默认的 Private Sub 更改为 Public Sub 来调用 subform 的 listview 事件。

【讨论】:

【参考方案2】:

我还不能发表评论,所以我会输入它作为答案。 您是否在视图、对象浏览器中查看了该对象可用的方法和属性?假设你想要的东西是可能的,你应该能够使用这些信息写出你想要的东西。

【讨论】:

以上是关于如何在 Access VBA 中声明对 ActiveX“ListView”控件的引用?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Access 2003 和 VBA 中使用控件集合

过程声明与 Access-Vba 中具有相同名称的事件或过程的描述不匹配

Access 新手如何运行没有 Sub 的 VBA 代码?

Access VBA - 为声明为 long 的函数返回某种空白/空值

如何在 Access VBA 中设置对正在运行的对象的引用

Access 2013 VBA 自动化 Excel 丢失窗口