将多栏列表框移回Excel中

问题描述 投票:0回答:1

我已经从四列中填充了一个Userform,按照在下面的建议 VBA Excel 多列填充列表框.

我现在想让我的用户能够删除任何一行,并让新列表框中的内容移回Excel工作表,使用相同的列。

EDIT: 完整的项目列表可以是任何东西,从一行到几十行。举个例子说明我的代码是如何工作的。 假设在5行的列表中,第3行被用户删除。在这种情况下,所有被删除的条目都会被还原到正确的范围内(所以第1行和第2行是正确的)。第4行及以下的条目不会被恢复。

有什么方法可以让所有剩余的行在Excel中填充?

用户可以从这段代码中删除整行。

Private Sub Remove_Click()
Dim i as Integer
For i = Me.ListBox1.ListCount - 1 To 0 Step -1
        If Me.ListBox1.Selected(i) = True Then
            Me.ListBox1.RemoveItem i
            Exit For
        End If
    Next
End Sub

我用来重新填充Excel表格的代码在这里。没有显示错误信息。好像代码认为它已经完成了。

Private Sub CommandButton1_Click()
Dim ws      As Worksheet
Dim rng     As Range
Dim MyArray
Dim x As Long
Set ws = Sheets("EnteredData")

Set rng = ws.Range("M3:P" & ws.Range("M" & ws.Rows.Count).End(xlUp).Row)

    rng.Clear

    MyArray = Me.ListBox1.List
    x = Me.ListBox1.ListCount - 1
    ws.Range("M3:P" & x).Value = MyArray

End Sub

我真的很感谢任何帮助解决这个问题。谢谢你的帮助

excel vba userform
1个回答
0
投票

看来问题出在这一行......

ws.Range("M3:P" & x).Value = MyArray

你需要对前三行进行核算,所以应该...

ws.Range("M3:P" & 3 + x).Value = MyArray
© www.soinside.com 2019 - 2024. All rights reserved.