Невозможно удалить строку и поле со списком - PullRequest
0 голосов
/ 08 октября 2019

У меня есть лист, создающий списки ActiveX, когда пользователь добавляет текст в определенный столбец. В частности, пользователь вводит строку в ячейку столбца A и макрос, затем получает текст и создает комбинированный список над той же самой ячейкой.

Теперь я хотел бы добавить кнопку «Удалить» помимо вновь созданногополе со списком для удаления той же строки.

Мне удалось создать поле со списком и кнопку тоже, но «иногда» у меня возникает ошибка в удалении строки: в частности, строка удаляется правильно, но поле со списком все еще сохраняется,Я не понимаю проблему, поскольку она возникает не каждый раз.

Как добавить комбинированные списки и кнопку удаления (в обработчике Worksheet_change):

    Dim cb As OLEObject

    Set cb = ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", Link:=False, DisplayAsIcon:=False, Left:=targ.Left, Top:=targ.Top, Width:=targ.Width, Height:=targ.Height)
    cb.LinkedCell = targ.Address

    For Each cell In paramRange
        cb.Object.AddItem cell.value
    Next cell

    Dim delBtn As Button
    Set delBtn = ActiveSheet.Buttons.Add(ActiveSheet.Cells(targ.row, 13).Left, ActiveSheet.Cells(targ.row, 13).Top, ActiveSheet.Cells(targ.row, 13).Width, ActiveSheet.Cells(targ.row, 13).Height)

    With delBtn
        .OnAction = "DeleteLine"
        .Caption = "DELETE"
        .name = targ.row
    End With

Макрос, связанный снажатие кнопки удаления:

For Each OleObj in ActiveSheet.Rows(CInt(Application.Caller.row)).OLEObjects 
   oleObj.Delete
Next oleObj.Delete

Rows(CInt(ActiveSheet.Shapes(Application.Caller).name)).Delete

Как я уже говорил, в большинстве случаев соответствующая строка И соответствующий комбинированный список удаляется красиво, но иногда удаляется только строка, в то время как комбинированный список все еще висит на своем месте. .

...