Удалить строку таблицы из пользовательской формы - PullRequest
0 голосов
/ 29 апреля 2020

Я сделал пользовательскую форму для удаления строки данных. Возможно ли, когда я удаляю строку данных, единственная затронутая строка - это строка таблицы, в то время как та же самая строка вне таблицы не удаляется?

Например, если хотите удалить Bill, test1 и 345 , возможно ли сделать так, чтобы данные1 оставались там и не были удалены?

Example

У меня есть этот код, но он удаляет всю строку, любая идея, как изменить это?

Private Sub CommandButton5_Click()
Dim profile_id As String
profile_id = ComboBox9.value
Lastrow = Sheets("Profile").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To Lastrow
If Sheets("Profile").Cells(i, 1).value = profile_id Then
Sheets("Profile").Rows(i).Delete
Unload Me
MsgBox "Your data has been deleted", vbOKOnly, "Successful"
End If
Next
End Sub

Ответы [ 2 ]

1 голос
/ 29 апреля 2020

Нечто подобное не повлияет на другое содержимое на листе

ActiveSheet.ListObjects(1).ListRows(3).Delete
0 голосов
/ 29 апреля 2020

Кросс-пост: https://www.mrexcel.com/board/threads/remove-table-row-from-userform.1132450/

Ответы для потомков. Если вы загружаете данные в свою пользовательскую форму, я предполагаю, что в элемент управления ListBox, как массив, а не источником непосредственно к данным таблицы, то да, вы можете сделать это. По сути, вы должны l oop просмотреть данные списка (массив), найти любой выбранный элемент и удалить его с помощью метода RemoveItem. Вот пример:

Private Sub CommandButton1_Click()

    Dim Index As Long
    Dim RemoveRow As Long
    Dim Values As Variant

    Values = Me.ListBox1.List
    RemoveRow = -1

    For Index = 0 To Me.ListBox1.ListCount - 1
        If Me.ListBox1.Selected(Index) Then
            RemoveRow = Index
            Exit For
        End If
    Next Index

    If RemoveRow = -1 Then Exit Sub
    Me.ListBox1.RemoveItem RemoveRow

End Sub

Если вы хотите на самом деле удалить строку таблицы, а не только в пользовательской форме, сначала замените эту строку:

Me.ListBox1.RemoveItem RemoveRow

этими строками :

ThisWorkbook.Worksheets("Profile").ListObjects("Table1").ListRows(RemoveRow + 1).Delete
Me.ListBox1.List = ThisWorkbook.Worksheets("Profile").ListObjects("Table1").DataBodyRange.Value

Снова изменив имена листов / таблиц в соответствии с требованиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...