2015-11-04 23 views
1

添加行我瞎搞用VBA,特别是与列表框。在多列列表框

我创建了一个搜索按钮,这是用找物业(.Find)和搜索,无论我们已经把它的文本框的数据表。

它可以将搜索结果添加到列表框,但是如果我们希望从搜索结果所在的整行开始,我们如何添加它,而不是像这样做vba listbox multicolumn add
如何使用VBA来完成?
它甚至有可能吗?
否则,这可能不VBA?

正在发生的事情:

Data table: a | b | c | d | e 
      1 | 2 | 3 | 4 | 5 
Search: a 
Listbox : a 

Search: 1 
Listbox : 1 

Search: 2 
Listbox : 2 

Search: d 
Listbox : d 

我 “想”:

Data table: a | b | c | d | e 
      1 | 2 | 3 | 4 | 5 

Search: a 
Listbox: a | b | c | d | e 

Search: 1 
Listbox: 1 | 2 | 3 | 4 | 5 

Search: 2 
Listbox: 1 | 2 | 3 | 4 | 5 

Search: d 
Listbox: a | b | c | d | e 

如果它的需要,我可以提供我使用的测试搜索代码。

回答

1

在多列列表框的项可以使用.List构件进行访问。该成员接受两个参数作为输入:

ListBox1.List(RowIndex, ColumnIndex) 

的rowIndex:我们要访问记录的行索引。请注意列表框中的行是基于零的。因此,第一行的索引是。

ColumnIndex:我们要访问的字段的列索引。请注意,多列列表框中的列也是零索引。因此,第一列的索引为。

例如:

'Assign values to the columns 
For i = 1 To 9 
    ListBox1.AddItem 'Create a new row 
    ListBox1.List(i - 1, 0) = i 'Fill the first column 
    ListBox1.List(i - 1, 1) = i * 10 
    ListBox1.List(i - 1, 2) = i * 100 
    ListBox1.List(i - 1, 3) = i * 1000 
Next i 

或者

但如果我们想从那里搜索结果是整个行,我们如何添加它,而不是做这样的事情VBA列表框多列添加?

假设你有一个范围对象(例如,rngFound),其代表你的.Find的结果:

Me.ListBox1.Clear 
Me.ListBox1.ColumnCount = rngFound.Columns.Count 
Me.ListBox.RowSource = rngFound.Address 
+2

很好的解释。我编辑它也包含使用'RowSource'方法作为替代选项。 –

+0

可怕的解释! – svacxpython

+1

@DavidZemens:THX的编辑,我忘了'RowSource'因为我没有在几年用它!但是OP的很好的完成和实际答案! ;) – R3uK