我有一个两列的列表框,我已经手动添加了条目以使用
.AddItem (potato)
.List(.ListCount - 1, 1) = bananaTbx.Text
当用户关闭userform时,所有数据都会丢失,因此我想有一个保存和退出按钮,用于将数据保存到工作表中。但是,由于列表的大小是动态的,因此无法将其保存到特定的单元格,并且它们将不断添加到工作表的主列表中。
我试图做这样的事情来提取数据:
Dim i As Integer
'loop through each row number in the list
For i = 0 To Userform1.Listbox1.ListCount - 1
'create sequence 1,1,2,2,3,3,4,4 ... to reference the current list row
j = Application.WorksheetFunction.RoundDown(i + 0.5, 0)
'create sequence 0,1,0,1,0,1,0,1 ... to reference current column in list
If Len(CStr(i / 2)) > 1 Then
k = 0
Else
k = 1
Sheets("Data").Range("A1" & ":" & "A" & i).Value = Userform1.ListBox1.List(j, k)
End If
错误:
1004 Object defined error
如何正确或更有效地执行此操作?
我创建了一个简单的用户窗体,以演示如何从用户窗体上的多列列表框中提取值/数据
首先创建带有几个控件的简单用户窗体
Module1
向您的项目中添加新代码,并在其中粘贴以下代码
Sub TestUserForm()
UserForm1.Show
Unload UserForm1
End Sub
在项目资源管理器(VBE)上单击鼠标右键UserForm1
,并命中View Code
复制并粘贴以下代码
Private Sub CommandButton1_Click()
With ListBox1
.AddItem TextBox1.Value
.List(.ListCount - 1, 1) = TextBox2.Value
End With
End Sub
Private Sub CommandButton2_Click()
Dim ws As Worksheet
' create a results sheets if you do not already have one
Set ws = Sheets("Results")
Dim nextAvailableRow As Long
Dim i As Long
For i = 0 To ListBox1.ListCount - 1
nextAvailableRow = ws.Range("A" & Rows.Count).End(xlUp).Row + 1
ws.Range("A" & nextAvailableRow) = ListBox1.Column(0, i)
ws.Range("B" & nextAvailableRow) = ListBox1.Column(1, i)
Next i
Me.Hide
End Sub
创建一个新的电子表格并命名 Results
运行TestUserForm
宏
将样本数据添加到列表中,然后单击Save
按钮
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句