是否可以在不使用工作表范围作为源的情况下在多列列表框中设置标题?
以下内容使用分配给列表框的列表属性的变体数组,标题显示为空白。
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 元素并将其放置在第一个列表框元素之上。
像这样:
然后调用函数 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/