vba - 如何使用 VBA 将标题添加到 Excel 用户窗体中的多列列表框

标签 vba excel

是否可以在不使用工作表范围作为源的情况下在多列列表框中设置标题?

以下内容使用分配给列表框的列表属性的变体数组,标题显示为空白。

Sub testMultiColumnLb()
    ReDim arr(1 To 3, 1 To 2)

    arr(1, 1) = "1"
    arr(1, 2) = "One"
    arr(2, 1) = "2"
    arr(2, 2) = "Two"
    arr(3, 1) = "3"
    arr(3, 2) = "Three"


    With ufTestUserForm.lbTest
        .Clear
        .ColumnCount = 2
        .List = arr
    End With

    ufTestUserForm.Show 1
End Sub

最佳答案

这是我解决问题的方法:

此解决方案要求您添加第二个 ListBox 元素并将其放置在第一个列表框元素之上。

像这样:

Add an additional ListBox

然后调用函数 CreateListBoxHeader 以使对齐正确并添加标题项。

结果:

Call the function CreateListBoxHeader

代码:

  Public Sub CreateListBoxHeader(body As MSForms.ListBox, header As MSForms.ListBox, arrHeaders)
            ' make column count match
            header.ColumnCount = body.ColumnCount
            header.ColumnWidths = body.ColumnWidths

        ' add header elements
        header.Clear
        header.AddItem
        Dim i As Integer
        For i = 0 To UBound(arrHeaders)
            header.List(0, i) = arrHeaders(i)
        Next i

        ' make it pretty
        body.ZOrder (1)
        header.ZOrder (0)
        header.SpecialEffect = fmSpecialEffectFlat
        header.BackColor = RGB(200, 200, 200)
        header.Height = 10

        ' align header to body (should be done last!)
        header.Width = body.Width
        header.Left = body.Left
        header.Top = body.Top - (header.Height - 1)
End Sub

用法:

Private Sub UserForm_Activate()
    Call CreateListBoxHeader(Me.listBox_Body, Me.listBox_Header, Array("Header 1", "Header 2"))
End Sub

关于vba - 如何使用 VBA 将标题添加到 Excel 用户窗体中的多列列表框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/657498/

相关文章:

excel - 更改 VBA 常量的值

vba - Outlook:添加或更新日历条目时运行代码?

vba - Excel VBA循环遍历所有工作簿和所有工作表

vba - 是否有任何语法可以列出所有行

c# - 将数据集导出到 excel 2007 EPPlus

java - 将宏图转换为 gwt

vba - 找不到Excel VBA公式类型不匹配错误

VBA 舍入百分比

vba - 在任何事件工作表而不是工作表 1 上运行的代码

用于返回运行时错误 9 的多个 xlsx 文件的 VBA cellextract