多选列表框内容到范围

使用VBA我创build了一个用户窗体与各种文本框,combobox和列表框。 我现在设置它,所以一旦你点击提交button( 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,梭子鱼,锡耶纳,Visio,项目。

您可以迭代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