将列表框添加到从垂直到水平的工作表中并将所有结果加载到列表框中

在成功地将我的数据加载到一个列表框之后,我被告知数据应该被水平定向而不是垂直定向。 怎样才能实现新的规格?

这是所需的结果:

在这里输入图像说明

Private Sub CommandButton3_Click() Dim i As Integer Dim k As Integer With Me.lsbWarenausgang For k = 0 To .ListCount - 1 If .Selected(k) = True Then For i = 1 To 9 Worksheets("Tabelle5").Cells(i, 1) = Me.lsbWarenausgang.List(k, i - 1) Next i End If Next k End With End Sub 

使用一个辅助数组(与列表框列相同的大小)来填充当前选定的列表框行,然后写在Excel表单中

对于后者的操作使用:

  • .Cells(1, .Columns.Count).End(xlToLeft)

    获得第一行的最后一个非空单元格

  • .Offset(, IIf(IsEmpty(.Cells), 0, 1))

    是否用一列来抵消它是否由前面的方法返回的范围是非空的单元格

  • .Resize(9)方法引用与数组相同行的1列范围

所以你可以编码:

  Option Explicit Private Sub CommandButton3_Click() Dim i As Long, k As Long Dim arr(1 To 9) As Variant With Me.lsbWarenausgang For k = 0 To .ListCount - 1 If .Selected(k) Then For i = 1 To 9 arr(i) = .List(k, i - 1) Next i With Worksheets("Tabelle5") With .Cells(1, .Columns.Count).End(xlToLeft) .Offset(, IIf(IsEmpty(.Cells), 0, 1)).Resize(9) = Application.Transpose(arr) End With End With End If Next k End With End Sub