¿Cuáles son los beneficios de establecer objetos en "Nada"
He notado que algunas personas usaránSet Object = Nothing
en procedimientos de cierre. Pude encontrar por qué esto es útil para instancias de Access, pero ninguna respuesta ha sido satisfactoria cuando se trata de hacer esto para Excel, entonces, ¿Cuál es exactamente el beneficio de establecer objetos en Nothing?
Lo agregué a mi código como ejemplo para respaldar esta pregunta, pero ¿es solo una pérdida de espacio? Si es una buena práctica, ¿por qué?
En lo que respecta al código, no hay problemasco osi Set = Nothing
. Estoy tomando datos de una exportación del sistema que tiene columnas excesivas que no necesitamos. Para reducir la cantidad de iteraciones de copiar / pegar, estoy tomando todos los rangos con una unión, con la excepción de dos. El orden de las dos últimas columnas debe cambiarse, por lo que me vi obligado a copiar / pegarlas por separado.
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