блоки

етил, что некоторые люди будут использоватьSet Object = Nothing в процедурах закрытия. Мне удалось выяснить, почему это полезно для экземпляров Access, но ни один ответ не был удовлетворительным, когда дело доходит до этого для Excel, поэтомуВ чем именно заключается преимущество установки объектов в Nothing?

Я добавил его в свой код в качестве примера, чтобы поддержать этот вопрос, но разве это пустая трата пространства? Если это хорошая практика, почему?

Что касается кода, никаких проблемс участием или жебез Set = Nothing, Я получаю данные из системного экспорта, в котором есть лишние столбцы, которые нам не нужны. Чтобы уменьшить количество итераций копирования / вставки, я собираю все диапазоны с объединением, за исключением двух. Порядок последних двух столбцов необходимо изменить, поэтому я был вынужден скопировать / вставить их отдельно.

With CurrentBook.ActiveSheet

    Dim LRow2 As Long
    LRow2 = .Range("BG" & .Rows.Count).End(xlUp).Row

    Dim Range1 As Range: Set Range1 = .Range("A2:C" & LRow2)
    Dim Range2 As Range: Set Range2 = .Range("F2:F" & LRow2)
    Dim Range3 As Range: Set Range3 = .Range("H2:H" & LRow2)
    Dim Range4 As Range: Set Range4 = .Range("M2:M" & LRow2)
    Dim Range5 As Range: Set Range5 = .Range("P2:P" & LRow2)
    Dim Range6 As Range: Set Range6 = .Range("S2:S" & LRow2)
    Dim Range7 As Range: Set Range7 = .Range("V2:V" & LRow2)
    Dim Range8 As Range: Set Range8 = .Range("X2:X" & LRow2)
    Dim Range9 As Range: Set Range9 = .Range("AD2:AD" & LRow2)
    Dim Range10 As Range: Set Range10 = .Range("AR2:AX" & LRow2)
    Dim Range11 As Range: Set Range11 = .Range("AY2:AY" & LRow2)
    Dim Range12 As Range: Set Range12 = .Range("AZ2:AZ" & LRow2)

End With

Dim CopyRange As Range: Set CopyRange = Union(Range1, Range2, Range3, Range4, Range5, Range6, Range7, Range8, Range9, Range10)
CopyRange.Copy
ws.Range("A2").PasteSpecial xlPasteValues

    Range12.Copy
    ws.Range("S2").PasteSpecial xlPasteValues

        Range11.Copy
        ws.Range("T2").PasteSpecial xlPasteValues

'''''''''''''''
''''Closing''''
'''''''''''''''

Closing:
CurrentBook.Close False
ws.Range("A1").Select

Application.ScreenUpdating = True
Application.DisplayAlerts = True

Set MyFile = Nothing: Set ws = Nothing: Set CurrentBook = Nothing
Set Range1 = Nothing: Set Range2 = Nothing: Set Range3 = Nothing: Set Range4 = Nothing: Set Range5 = Nothing
Set Range6 = Nothing: Set Range7 = Nothing: Set Range8 = Nothing: Set Range9 = Nothing:
Set Range10 = Nothing: Set Range11 = Nothing: Set Range12 = Nothing
Set CopyRange = Nothing

Exit Sub