使用来自用户定义函数的值创建组合框

Posted

技术标签:

【中文标题】使用来自用户定义函数的值创建组合框【英文标题】:Create combo box with values from a user defined function 【发布时间】:2014-10-27 23:59:30 【问题描述】:

我找到了这个用户定义的函数来列出访问数据库中的所有表:http://www.consultdmw.com/access-VBA-list-objects.htm

用户定义函数如下:

Function dmwListAllTables() As String

Dim tbl As AccessObject, db As Object
Dim strMsg As String

On Error GoTo Error_Handler

Set db = Application.CurrentData
For Each tbl In db.AllTables
Debug.Print tbl.Name
Next tbl

strMsg = " -- Tables listing complete -- "

Procedure_Done:
dmwListAllTables = strMsg
Exit Function

Error_Handler:
strMsg = Err.Number & " " & Err.Description
Resume Procedure_Done

End Function

此功能最初设计用于将当前数据库中的所有表名打印到即时窗口,但是我正在寻找一种方法将dmwListAllTables() 输出合并为带有组合框的表单中使用的值。这个壮举可能吗?

提前致谢,

dubbbdan

【问题讨论】:

【参考方案1】:

我确信可以修改代码以执行您想要的操作。只是一个问题,您希望在什么时候发生这种情况。当表单加载或单击按钮时,ComboBox 是否需要填充表的名称?你所要做的就是,(为了更简单的例子,我将在表单加载时使用),

Private Sub Form_Load()
    Me.comboBoxName.RowSourceType = "Value List"
    Me.comboBoxName.RowSource = dmwListAllTables()
End Sub

那么你的函数要修改为,

Function dmwListAllTables() As String
    Dim tbl As AccessObject, db As Object
    Dim strMsg As String
On Error GoTo Error_Handler
    Set db = Application.CurrentData

    For Each tbl In db.AllTables
        strMsg = strMsg & tbl.Name & ";"
    Next tbl

Procedure_Done:
    dmwListAllTables = strMsg
    Exit Function

Error_Handler:
    strMsg = Err.Number & " " & Err.Description
    Resume Procedure_Done
End Function

【讨论】:

谢谢。效果很好。

以上是关于使用来自用户定义函数的值创建组合框的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Dlookup for Multiple Criteria 创建动态组合框

使用来自不同列的值通过数据源填充组合框

自动填充组合框 ExtJS

自定义与用户控制

如何在 Access 中将一个控件源与来自用户表单的多个组合框一起使用?

自定义与用户控制