VBA添加更多列到ListBox



我想给Listbox添加更多的列必须在RowSource中更改某些内容?

如果是放数组的东西,但我没有做

Sub preencherListBox()
Dim ultimaLinha As Long
Dim linha As Integer
'retorna ao valor ultima linha preenchida
ultimaLinha = Folha1.Range("A100000").End(xlUp).Row
'percorre da segunda linha até a última linha e atribui o valor da primeira e segunda coluna
For linha = 2 To ultimaLinha
Visualizar.ListBox1.AddItem Folha1.Range("A" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 1) = Folha1.Range("B" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 2) = Folha1.Range("C" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 3) = Folha1.Range("D" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 4) = Folha1.Range("E" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 5) = Folha1.Range("F" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 6) = Folha1.Range("G" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 7) = Folha1.Range("H" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 8) = Folha1.Range("I" & linha)
Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 9) = Folha1.Range("J" & linha)
'Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 10) = Folha1.Range("K" & linha)
'Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 11) = Folha1.Range("L" & linha)
'Visualizar.ListBox1.List(Visualizar.ListBox1.ListCount - 1, 12) = Folha1.Range("M" & linha)
Next
End Sub

如果列表框有超过9列,则不能使用AddItem,请将列表框的数据放入数组并使用List。

Option Explicit
Sub preencherListBox()
Dim arrData As Variant
Dim ultimaLinha As Long
Dim linha As Integer
'retorna ao valor ultima linha preenchida
ultimaLinha = folha1.Range("A100000").End(xlUp).Row
arrData = folha1.Range("A2:M" & ultimaLinha).Value

With Visualizar.ListBox1
.ColumnCount = 13
.List = arrData
End With

End Sub

A)一般

  • 一个(listbox)控件绑定到data不接受AddItem方法,即AddItem失败并引发运行时错误70。

所以有必要在

  • a)手动或通过代码分配或
  • 更改RowSource属性
  • b)通过array或AddItem赋值给array list属性。

B)如果没有绑定RowSource, @Norie的语句(尽管指向正确的方向)需要添加一些内容

"如果列表框的列数超过9列,则不能使用AddItem。">

  • 默认使用AddItem只提供10列(从零开始的列表列索引范围从0到9)。
  • 请注意,与将整个数据字段数组分配给列表框的.List属性相比,.AddItem循环遍历给定范围内的每个单元格是非常耗时的。
  • 通过空列表赋值和最终的行删除来初始化列表框实际上将允许以后的AddItem执行填充超过10列:

Private Sub UserForm_Initialize()
With Me.ListBox1
ReDim tmp(0 To 0, 0 To 11)
.List = tmp
.ColumnCount = 12
.ColumnWidths = "30;30;;;;;;;;40;41;42"
.RemoveItem 0

.AddItem "one"
.List(.ListCount - 1, 1) = "two"
.List(.ListCount - 1, 10) = "eleven"
.List(.ListCount - 1, 11) = "twelve"
End With
End Sub

相关内容

  • 没有找到相关文章

最新更新