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

| 2 comentarios

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

2 comentarios

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

  2. Excelente comentario. Una consulta. ¿Y si quisieras copiar solo valores (Copia y pega valores) de una hoja a otra, pero además que se copie el formato. (En la primera hoja hay formulas, en la siguiente solo valores porque se trata de un reporte).¿Cual sería la macro?

Deja una respuesta

Los campos requeridos estan marcados con *.