2011-08-07 138 views

回答

19

通过使用List属性。

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

非常感谢。现在,如果我想获得这个价值,我该怎么做?我的意思是要获得第一列中的值我做ListBox1.Value ... bot的第二列? –

+1

@Andrei Ion以同样的方式。 'List'是一个属性,两种方式都有效。 – GSerg

+0

是的,我猜想它必须是相同的方式,但我不会知道所选项目的行...我知道列是1,但行?我猜ListBox1.ListCount-1是你添加值时的行......我怎么知道当选择一个值时行是什么?非常感谢! –

-5

选择欢迎使用属性

行来源类型=>值列表

代码:

ListbName.ColumnCount = 2

ListbName.AddItem“值列1;值栏2“

+0

这不会为第2列添加任何值。AddItem方法将值和可选索引(行索引)作为参数。 –

+0

@DavidZemens由于rowSource类型是“值列表”分隔的字符串被解释为与列相同。上面的Kong代码将起作用。 –

+0

@krishKM在哪个版本的Excel?使用2010年,'Debug.Print ListBox1.RowSourceType'引发一个“找不到成员”的错误。我可以在本地窗口中看到它,但不能在属性窗格中看到它。 –

2

还有就是要实现它多了一个办法: -

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)”来使用选项值来探索其他选项。

+0

不完全是答案,而是添加多列列表的更有效的方法。 – FCastro

+0

这只适用于与Excel结合使用VBA的情况:) –