Недостаточно ресурсов памяти для выполнения этой операции - PullRequest
0 голосов
/ 09 января 2020

Сценарий

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

Проблема

У меня возникает ошибка памяти при нажатии на один listbox, присутствующий во второй пользовательской форме

Мой userform2, как показано ниже

enter image description here

И ошибка, как показано ниже

enter image description here

Ниже приведены все коды в userform2

Private Sub UserForm_Initialize()

        Dim reportWbi As Workbook
        Dim internal As Worksheet

        Set reportWbi = Workbooks.Add(reportFile)
        Set internal = reportWbi.Worksheets("Internal")
        internal.Select

        LastAddress = internal.Range("C" & Rows.Count).End(xlUp).Address
        ListBox2.RowSource = "C6:" & LastAddress

        reportWbi.Close savechanges:=False
        Set reportWbi = Nothing
        Set internal = Nothing
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    reportCreator.Show
End Sub

На самом деле внутри не так уж много переменных или вещей. После отладки один за другим я заметил, что без следующих строк ошибок памяти нет

    reportWbi.Close savechanges:=False
    Set reportWbi = Nothing
    Set internal = Nothing

В тот момент, когда я дал строку reportWbi.Close savechanges:=False, выдается ошибка памяти.

Только примечание, что я использую офисную 365 и 8Gb RAM. Я не думаю, что это вызывает какие-либо проблемы

Кто-нибудь знает, что не так?

Редактировать 1

Я пробовал весь этот код в Файл фирменного Excel с одной пользовательской формой и той же ошибкой памяти. В тот момент, когда я удалил reportWbi.Close savechanges:=False, все работает без ошибок

Редактировать 2

Я удалил код ListBox2.RowSource = "C6:" & LastAddress, и на этот раз также без ошибок даже с reportWbi.Close savechanges:=False настоящее

Очень странно, почему это происходит. Пожалуйста, помогите, если знаете что-нибудь об этом

1 Ответ

0 голосов
/ 10 января 2020

После некоторых испытаний выяснилось, что проблема связана с ListBox2.RowSource = "C6:" & LastAddress этим RowSource свойством. Я не знаю, почему это вызвало проблемы с памятью, хотя. Я удалил это и заполнил Listbox2, используя другой метод l oop, как показано ниже

        Range("C6").Select
        Do While ActiveCell.Value <> ""
            With ListBox2
                .AddItem ActiveCell.Value
            End With
            ActiveCell.Offset(1, 0).Select
        Loop

Теперь нет проблем с памятью, и все отлично работает

...