在具有多列的列表框中添加项目

10

我该如何在具有2列的列表中添加项目?如果我使用ListBox.AddItem,它只会将项目添加到第一列。我想要在第二列中添加项目。 谢谢!

3个回答

24

通过使用 List 属性。

ListBox1.AddItem "foo"
ListBox1.List(ListBox1.ListCount - 1, 1) = "bar"

非常感谢。现在如果我想获取那个值,我该怎么做?我的意思是如何获取第一列中的值,我使用ListBox1.Value ... 那么第二列呢? - Andrei Ion
1
以同样的方式,List是一个属性,两种方式都可以使用。 - GSerg
是的,我猜想它必须是同样的方式,但我不知道所选项目的行数...我知道列是1,但行呢?我猜ListBox1.ListCount-1是添加值时的行数...当选择一个值时,我怎么知道它在哪一行?非常感谢! - Andrei Ion
1
@Andrei Ion 选定的索引是.ListIndex。请使用对象浏览器,而不是在黑暗中漫游。按F2键。查找属性并按F1键。 - GSerg
谢谢。我尝试使用帮助文档,它确实帮了我很多忙,但有时候我真的不知道该搜索什么,然后就会去使用stackoverflow。无论如何...非常感谢...它确实帮了我很多忙! - Andrei Ion
您可以在使用数组为ListBox填充多列中找到补充说明以及如何通过数组分配来克服.AddItem方法内置的10列限制。 - T.M.

3
还有一种方法可以实现它:-
Private Sub UserForm_Initialize()
Dim list As Object
Set list = UserForm1.Controls.Add("Forms.ListBox.1", "hello", True)
With list
    .Top = 30
    .Left = 30
    .Width = 200
    .Height = 340
    .ColumnHeads = True
    .ColumnCount = 2
    .ColumnWidths = "100;100"
    .MultiSelect = fmMultiSelectExtended
    .RowSource = "Sheet1!C4:D25"
End With End Sub

在这里,我使用C4:D25范围作为列的数据源。这将导致两个列都填充有值。

属性很容易理解。您可以通过在UserForm中绘制ListBox并使用“属性窗口(F4)”来尝试其他选项值。


不是直接回答,而是提供一种更高效的方法来添加多列列表。 - FCastro
只有在与Excel一起使用VBA时才有效 :) - sir KitKat

-6

选择属性

行源类型 => 值列表

代码:

ListbName.ColumnCount=2

ListbName.AddItem "value column1;value column2"

ListbName.AddItem "值 列1;值 列2"


1
这不会给第二列添加任何值。AddItem方法的参数包括一个值和可选的索引(行索引)。 - David Zemens
@DavidZemens 由于rowSource类型是“值列表”,因此分隔的字符串被解释为列。Kong提供的代码将起作用。 - Krish
@krishKM 在哪个版本的Excel中?在使用2010版本时,“Debug.Print ListBox1.RowSourceType”会引发“找不到成员”的错误。我可以在Locals窗口中看到它,但在Properties窗格中看不到。 - David Zemens
1
@krish,在Excel的列表框(或组合框)上没有RowSourceType属性。你可能在想Access。 - Caltor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接