Перемещение списка с несколькими столбцами обратно в Excel - PullRequest
0 голосов
/ 29 мая 2020

Я заполнил пользовательскую форму из четырех столбцов, следуя советам VBA Excel Заполнить ListBox несколькими столбцами .

Теперь я хочу, чтобы мои пользователи могли удалять любые строку, а содержимое в новом списке можно переместить обратно на лист Excel, используя те же столбцы.

РЕДАКТИРОВАТЬ: полный список элементов может быть любым, от одной строки до десятков линий. В качестве примера того, как работает мой код: при условии, что из списка из 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

Я очень признателен за любую помощь в решении этой проблемы. Спасибо

1 Ответ

0 голосов
/ 29 мая 2020

Похоже, проблема в этой строке ...

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

Вам нужно будет учесть первые три строки, так что это должно быть ...

ws.Range("M3:P" & 3 + x).Value = MyArray
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...