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
27/06/2019 a las 10:24 am
Excelente ejemplo
de verdad que también estaba en esa duda, esta claro que debo hacer
25/05/2020 a las 10:54 am
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?
28/06/2021 a las 9:58 am
Excelente Amigo pero quisiera saber como hacer esto mismo pero pegarlo como Valores, imagine que esa celda que copia es una formula y deseo pegar solo el resultado
Sub copiar ()
Sheets("Hoja1").Range("A1").Copy Sheets("Hoja2").Range("A1")
End Sub
11/12/2022 a las 7:19 pm
Hola, estoy realizando un formulario de evolución que captura la información en una Hoja base de datos.
La Hoja Evolución contine varias preguntas se selecciona con la letra “x” y cada una de pregunta seleccionada tiene una valoración no numérica; Ejemplo: Sobresaliente, Mejor, Alcanzo la -expectativas.
Muy debajo Expectativas - Alcanza Expectativas -Sobresaliente
x
Que macro debo hacer para que esta selección pase aun Hoja_Base_Datos y quede guardada allí.
Ya tengo un CommandButton para guardar la selección.