【问题标题】: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

【问题讨论】:

    标签: forms ms-access combobox vba


    【解决方案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
    

    【讨论】:

    • 谢谢。效果很好。
    猜你喜欢
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 2020-03-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    相关资源
    最近更新 更多