【问题标题】:How to get an output from a list box to populate some cells如何从列表框中获取输出以填充某些单元格
【发布时间】:2019-02-27 09:29:21
【问题描述】:

我创建了一个用户表单,其中包含几个列表框。Listbox1 中包含所有项目,用户可以选择多个值然后移动到 Listbox2。一旦它们在 listbox2 中,我需要它们填充一些单元格。每个单元格有 1 个列表项。

我很难弄清楚如何去做。到目前为止,我所拥有的是:

Private Sub CommandButton1_Click()
Dim tmpMsg As String
Dim t As Long

 tmpMsg = "Selected categories:"

For t = 1 To ListBox2.ListCount
 tmpMsg = tmpMsg & vbNewLine & ListBox2.List(t - 1)
Next

 Worksheets("Specialist Prices").Activate
    Range("a1").Select
    ActiveCell.Value = tmpMsg

End Sub

这会用整个列表项集填充单元格 A1。但我不知道如何将 1 个值放入 a1 然后向下移动并将下一个放入 A2 等等,直到所有项目都被考虑在内。

任何帮助将不胜感激。

【问题讨论】:

    标签: excel vba listbox


    【解决方案1】:

    现在您正在创建一个字符串。它有换行符,但它仍然是一个文本。如果您没有将 tmpmsg 用于其他用途,则可以使用 for 循环来填充您的工作表

    For t = 1 To ListBox2.ListCount
      Thisworkbook.sheets("Specialist Prices").Range("A" & t).value = ListBox2.List(t - 1)
    Next
    

    您甚至可以通过将数组添加到整个范围来更快地完成此操作。 ListBox2.List 是一个值数组,您可以将该数组粘贴到一系列单元格中:

    ThisWorkbook.sheets("Specialist Prices").Cells(1,1).Resize(ListBox2.ListCount,1) = ListBox2.List
    

    这里的Resize 方法确保范围包含的单元格数量与ListBox2 中的元素数量相同。它将范围从 1 个单元格调整为 ListBox2.ListCount 行数和 1 列的范围。

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 2020-08-01
      • 2019-01-20
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多