只返回一条记录时,Excel VBA多列列表框换行到下一行

时间:2016-06-27 14:37:05

标签: excel-vba vba excel

提前感谢您抽出宝贵时间帮助我。这是我第一次在这里提问 - 因为我在研究现有问题和答案方面取得了如此大的成功!我是这个网站的忠实粉丝!

无论如何 - 到了这一点。我编写了一个程序,包括用户表单中使用的一些列表框。我正在从查询Oracle数据库的SQL语句派生的数组中填充这些多列列表框。当查询结果中的记录满足特定条件时,将在列表框中为最终用户发布该记录。

问题:当查询中只有一条记录符合条件时,列会被包装成多行而不是一行。当用户点击一行时,这会导致我打算发生的问题。我需要将与查询中的单个记录关联的所有列只写入列表框的一行 - 即使只有一个记录。有趣的部分:当返回2条或更多记录时,它会很好地发布到列表框中。

我感谢任何帮助!我已经用尽了我的在线搜索,并且还没有找到这样的常见问题。

以下是我的一些代码:

        .ConnectionString = strDBConnectWrite 'Connect to database
        .CursorLocation = adUseClient 'Necessary for creating disconnected recordset
        .Open 'Open Connection
    End With


    With oTbl4
        .ActiveConnection = oDB
        .source = strSQL4 'SQL statement above
        .LockType = adLockReadOnly
        .Open
        'Populate the array with the recordset
        oArray4 = .GetRows
        k = .Fields.Count
    End With

    x = oTbl4.RecordCount 'for debugging purposes during development

    'Debug.Print "oTbl4 count" & x




    With frmValidationForm.listAddresses 'listbox to which I want to publish the query results
        .ColumnCount = 8
        .ColumnWidths = "100;0;0;0;0;0;0;0"
        .Clear 'Clears the listbox
        .BoundColumn = 1
        .List = Application.Transpose(oArray4)
        .ListIndex = -1
    End With

1 个答案:

答案 0 :(得分:0)

更改此行:

.List = Application.Transpose(oArray4)

到此:

.Column = oArray4