使用VBA我创建了一个包含各种Textbox,Comboboxes&列表框。我目前设置它,以便一旦您点击提交按钮(Commandbutton1
),各种框内容将填充我的工作表上的选定单元格。
Private Sub CommandButton1_Click()
Sheets("Sheet2").Range("D4") = TextBox1.Text
Sheet2.Cells(5, 4) = ComboBox2.Text
Sheet2.Cells(6, 4) = ComboBox1.Text
Sheet2.Cells(7, 4) = TextBox2.Text
Sheet2.Cells(8, 4) = TextBox4.Text
UserForm1.Hide
End Sub
我还希望我的多选列表框的内容对单元格(9,4) - (15,4)执行相同的操作。我怎样才能做到这一点?此多选列表框中的选项包括Insight,Barracuda,Siena,Visio,Project。
答案 0 :(得分:0)
您可以迭代ListBox
的所选项目并将其添加到数组中。收集完所有选定项目后,转移到Range
。例如:
Private Sub CommandButton1_Click()
' your code
Sheets("Sheet2").Range("C8") = TextBox1.Text
Sheets("sheet2").Range("C12") = ComboBox2.Text
Sheets("sheet2").Range("F12") = ComboBox1.Text
Sheets("sheet2").Range("F8") = TextBox2.Text
Sheets("sheet2").Range("F10") = TextBox4.Text
Sheets("Sheet2").Range("C30") = TextBox7.Text
Sheets("Sheet2").Range("F29:F36") = TextBox8.Text
' my code to update the sheet with the listbox selections
Dim ws As Worksheet
Dim rng As Range
Dim lng1 As Long
Dim lng2 As Long
Dim str() As String
Set ws = ThisWorkbook.Worksheets("Sheet2")
Set rng = ws.Range("F22") ' (9, 4) - (15, 4)
lng2 = 0 ' count of selected items
For lng1 = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(lng1) Then
lng2 = lng2 + 1 ' increment counter
ReDim Preserve str(1 To lng2) ' resize array...
str(lng2) = Me.ListBox1.List(lng1) ' and add selected item
End If
Next lng1
' transfer to range
rng.Resize(lng2, 1).Value = Application.Transpose(str)
' close form
'Unload Me
UserForm1.Hide
End Sub