Excel VBA列表框来自14个文本框的多列多行

时间:2018-12-29 20:46:27

标签: excel vba excel-vba listbox userform

我有一个包含14个文本框,2个命令按钮“下一个”,“发布”和1个列表框的用户表单

我需要代码来将数据从14个文本框中获取到列表框中,再次,当用户输入新数据并按下一步时,将此数据添加到列表框中的第二行,再次获取,

最后,当他按下发布时,所有数据都移至工作表“数据库”

Sub CommandButton1_Click()

Dim arr1, i As Long
Dim arr2(0 To 0, 0 To 13)
arr1 = Array(TB10, TB10, TB0, tb1, cb1, cb2, tb5, tb4, TB10, TB10, TB10,  tb6, tb7, tb8)
For i = 0 To UBound(arr1)
    arr2(0, i) = arr1(i)
Next i
ListBox1.List = arr2

End Sub

但是此代码仅将一次数据添加到列表框中,我需要添加更多行♥

1 个答案:

答案 0 :(得分:0)

“ ...需要添加更多行”

通常,您将为.List的{​​{1}}属性分配一个完整的(d)数据集(您选择将其命名为ListBox1)。

由于您想在每个arr2事件中增加包含的元素行的数量并保留所有现有数据,因此从理论上讲,您需要增加二维数组的第一维-但是使用{ {1}}。

要解决此问题,只需反转CommandButton1_Click()的尺寸,从而在其第一维中定义14个列值,将“行”维定义为第二个列值。列表框控件提供了一个ReDim Preserve属性,您可以使用它代替通常的arr2属性来写回整个数据集(无需关心有意转置的行和列)。

注意

当您在OP中更改代码时,我假设.Column.List,...对应于枚举的TextBox控件。 (请根据需要更改数组Array tb0中有点奇怪的顺序。

示例代码

tb1

请允许我发表评论:我认为这可以回答您的原始问题。您会找到足够的示例,如何将数据移回到工作表中读取StackOverflow的站点,但这将需要用一个代码来表达一个新的问题,以显示到目前为止您已经尝试过的内容-请参见How to create a Minimal, Complete, and Verifiable example