Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Diferencia entre Select y Activate

| 1 comentario

Muchas veces surge esta pregunta entre estos dos comandos en VBA pues a simple vista parecen ser iguales. Me ha pasado que haciendo macros no sabía cual de los dos poner o cual era la diferencia entre estos o si debería de poner «select» y no «activate» por creer que me botaría algún error. 

La diferencia entre estos dos comandos es la cantidad. Con «activate» solo se puede seleccionar solamente una hoja o una celda; por otro lado, con «select» se pueden seleccionar varias celdas u hojas a la vez.

Ejemplo:

Sheets(«Hoja1»).Select

´se esta seleccionando toda la hoja. Si se pusiera activate en este caso en vez de select sería lo mismo.

Sin embargo, si tuviéramos seleccionadas varias hojas a la vez, la situación sería distinta

Por ejemplo:

Sheets(Array(«Hoja1», «Hoja2», «Hoja3»)).Select

‘En este caso no se pudiera usar activate pues nos botaría un error

 

Conclusión: usar select o activate se rige por la cantidad de celdas u hojas que queremos seleccionar para nuestra macro, si es una, es indistinto usar activate o select, pero si se necesita seleccionar o activar varias hojas se utiliza select

Por otro lado, usar activate o select influirá en el codigo final de la macro, especialmente cuando se busque copiar data de una hoja a otra.

El código que Excel te arroja es un código paso a paso del copiado y ocupa mucho espacio, lo cual hace más pesada a la macro. Por ello es necesario saber el uso del select y activate para resumir este código en 2 líneas, haciendo que la macro sea mucho mas liviana y corra mas rápido

Ejemplo:

Si hiciéramos el copiado con la grabadora de macros el código generado es el siguiente:

Sub Macro1()

Sheets(«Hoja1»).Select

Range(«A1»).Select

Application.CutCopyMode = False

Selection.Copy

Sheets(«Hoja2»).Select

Range(«A1»).Select

ActiveSheet.Paste

End Sub

 

 

Si hicieramos en codigo con lo aprendido:

Sub copiar ()

Sheets(«Hoja1»).Range(«A1»).Copy Sheets(«Hoja2»).Range(«A1»)

End Sub

 

Por ello es necesario aprender la distinción entre estos dos comandos, Gracias.

Por: Renzo Cruz

Un comentario

  1. Excelente ejemplo
    de verdad que también estaba en esa duda, esta claro que debo hacer

Deja un comentario

Los campos requeridos estan marcados con *.