H o l a:
Una de las ventajas de utilizar las variables como objetos es para simplificar el código.
También, cuando utilizas varias veces el mismo rango, es más práctico escribir una variable que repetir nuevamente el rango, por ejemplo:
Sin establecer un rango en una variable:
Sub macro1()
Range("A2:C3").ClearContents
Range("A2:C3").Interior.ColorIndex = 3
Range("A2:C3").Value = "datos"
End Sub
Para simplificar el código, estableciendo el rango en una variable:
Sub macro2()
Set r = Range("A2:C3")
r.ClearContents
r.Interior.ColorIndex = 3
r.Value = "datos"
End Sub
Imagina que tienes un código enorme, con diferentes rangos y hojas, entonces el rango que te interesa lo estableces en una variable como objeto, entonces ya no es necesario investigar cuál es tu rango, solamente haces referencia a la variable.
Otra forma de simplificar es la siguiente. Pero en esta forma no estás declarando una variable como objeto, simplemente le estás indicando que vas a hacer con el rango.
Sub macro3()
With Range("A2:C3")
.ClearContents
.Interior.ColorIndex = 3
.Value = "datos"
End With
End Sub
Otro ejemplo, sin variables:
Sub macro4()
Sheets("estado de cuenta de diciembre").Select
Range("C2:E2").Copy
Sheets("saldo final").Select
Range("C12").Select
ActiveSheet.Paste
Sheets("estado de cuenta de diciembre").Select
Range("C3:E3").Copy
Sheets("saldo final").Select
Range("C13").Select
ActiveSheet.Paste
End Sub
con variables:
Sub macro5()
Set h1 = Sheets("estado de cuenta de diciembre")
Set r1 = h1.Range("C2:E2")
Set r11 = h1.Range("C3:E3")
Set h2 = Sheets("saldo final")
Set r2 = h2.Range("C12")
Set r21 = h2.Range("C13")
r1.Copy r2
r11.Copy r21
End Sub
En la macro5, solamente se hacer referencia una vez al nombre de la hoja.
':)
':)