Страницы: 1
RSS
VBA. Userform.ListBox - ошибка вылета Excel и "Out of memory", Урок курса VBA, в котором автор через Userform удаляет записи из умной таблицы, что приводит к вылету всего Excel
 
Добрый день,

Сразу технические характеристики системы: i7, SSD, 24 Гб ОЗУ, WIN 10 x64, Office 365 x64, Excel версия 2204 Сборка 16.0.15128.20210.

Обучаюсь курсу VBA, где автор создает через Userform "FmInputMaster" добавление записи в умную таблицу на листе Masterdata, и затем удаление выбранной записи удалением строки из умной таблицы с того же листа через Userform "FmViewMaster" commandbutton "Delete Record".

Уже во время просмотра видео сам автор делает указание, что в конечной версии файла он отказался от этой кнопки и её кода "Delete Record" из-за возникающей ошибки.

И действительно в какой момент вроде всё работает: запись добавляется, удаляется и на какой-то раз удаления (порой уже на 3-4й), возникает ошибка:

https://disk.yandex.ru/i/8MwOvz_MYtniWw или окно "Out of memory", или просто сохранения файла после этих манипуляций.
И Excel схлопывается.

Как поправить код автора удаления записи, чтобы такого не было? Или это в принципе глючность поля ListBox?
 
Попробуйте так (добавил 1 строку с русским описанием) - таблица в Listbox не обновлялась после удаления, т.е. с листа данные удалялись, а в ListBox нет

Код
Private Sub btDelete_Click()
    Dim DeleteRec As Long
    Dim CheckDelete As VbMsgBoxResult
    
    DeleteRec = Me.LbEditCuct.ListIndex
    
    If DeleteRec = -1 Then
        MsgBox "No record has been selected for deletion", vbExclamation, "Delete Record?"
        Exit Sub
    Else
        CheckDelete = MsgBox("Are you sure you want to delere this record from the Master Data?", _
            vbExclamation + vbYesNo + vbDefaultButton1, "Delete Record?")
        If CheckDelete = vbNo Then Exit Sub
        DeleteRec = DeleteRec + 1
        shMaster.ListObjects("CustomerTable").ListRows(DeleteRec).Delete
        'обновляем таблицу в ListBox после удаления
        Me.LbEditCuct.RowSource = "CustomerTable"
    End If
End Sub
Изменено: New - 14.05.2022 15:56:51
 
Попробовал. Вроде работает какое-то время, потом на каком-то создании записи через Userform "FmInputMaster".

https://disk.yandex.ru/i/Vaha-n7p1wr6rA

Выскакивает эта же ошибка.

Скрин показывает, что при заполненных полях, нажимаю "ADD", в умную таблицу успевает добавиться строка с заполненным только первым полем. Ошибка. При нажатии на "Debug", подчеркивается указанная строка кода. При попытке сохранить или закрыть файл, Excel вылетает.
Изменено: Emelyanov Roman - 14.05.2022 17:36:14
 
Я смотрел только код удаления строки, т.к. вы на неё жаловались. В другую форму я не заходил
Объясню так - весь ваш код VBA от курса VBA очень сырой. В него нужно добавить ещё кучу проверок для нормальной работы с умной таблицей.
Если коротко - если  допилить до ума ваш код, то он будет работать, вам показали небольшой пример работы с таблицей, а дальше, наверное, либо вы сами должны доработать этот код, либо доработка этого кода будет в следующих уроках вашего курса VBA.
P.S. Работайте с обычными ячейками на листе, без умной таблицы. Так вам будет проще
Изменено: New - 14.05.2022 17:47:54
 
Спасибо! Будем учиться 👍
Страницы: 1
Наверх