我已经从四列中填充了一个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
我真的很感谢任何帮助解决这个问题。谢谢你的帮助
看来问题出在这一行......
ws.Range("M3:P" & x).Value = MyArray
你需要对前三行进行核算,所以应该...
ws.Range("M3:P" & 3 + x).Value = MyArray