我有一个包含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
但是此代码仅将一次数据添加到列表框中,我需要添加更多行♥
答案 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。