Diferencia entre Select y Activate una hoja en VBA

Seleccionar o activar una hoja no es que sea la mejor práctica del mundo para operar con VBA puesto que normalmente podrías hacerlo de manera directa. El caso, si es que alguna vez necesitas seleccionar o activar una hoja debes saber al diferencia.

Seleccionar: puedes seleccionar varias hojas en Excel con VBA (o sin VBA).

Activar: solamente se puede activar una única hoja cada vez con VBA (o sin VBA).

Un ejemplo de código sería el siguiente:

Sheets(Array(“Sheet1”, “Sheet2”, “Sheet3”)).Select

Sheets(“Sheet2”).Activate

La hoja Sheet2 es la única que se ha activado mientras que el resto están seleccionadas.

Autor: Quique Arranz

Quique es un fanático del Excel desde que empezó a trabajar con ello hace unos pocos años. Adquirió su conocimiento a través de Google y de infinitas pruebas y más pruebas. Además, Quique es un entusiasta de su familia (mujer e hijos), del deporte y de la cerveza... no dudes en contactar con él para cualquier duda que tengas.

13 opiniones en “Diferencia entre Select y Activate una hoja en VBA”

  1. Hola me podríais ayudar, he abierto un excel desde un word pero no soy capaz de decirle en que hoja debe ponerse para trabajar, me copia los datos de la ultima pagina activa en vez de la que yo deseo, gracias

  2. Quique Arranz me podrías ayudar, he abierto un excel desde un word pero no soy capaz de decirle en que hoja debe ponerse para trabajar, me copia los datos de la ultima pagina activa en vez de la que yo deseo, gracias

  3. Gracias por compartir..; Si deseo imprimir como 100 hojas como seria el código.
    O tendre que colocar las 100 veces sheet1 sheet2 hasta llegar a 100.
    Me podrias ayudar. Gracias nuevamente.

    1. Hola Esau: No es necesario que crees un procedimiento VBA para imprimir las hojas de un libro aunque esa labor la hicieras todos los días. Como sabes, Excel te permite seleccionar muy rápida y facilmente las hojas que desees imprimir.
      De todos modos, suponiendo que el aspecto de las hojas ya lo has configurado, habría que escribir un prcedimiento con la instrucción Sheets.printout que impirme todas las hojas del libro activo.
      Si quisieras imprimir sólo algunas:
      1. Declarar una variable tipo integer.
      2. inicializar la variable con el número de hojas del libro.
      x=ActiveWorkbook.worksheets.Count
      3. Establecer un bucle For Next.
      4. En el interior del bucle hacer algún tipo de selección de las hojas que quieres Imprimir.
      Una cosa así
      Dim x As Integer
      Dim y As Integer

      x = ActiveWorkbook.Worksheets.Count
      For y = 1 To x
      Sheets(y).Printout
      Next

      A lo que deberías añadir algún tipo de selección de las hojas a imprimir.
      Un saludo,

  4. me gustaría recibir ayuda con la programación de una macro similar a la mostrada, pero con la diferencia que necesito que las hojas a seleccionar las lea desde una celda, de manera que pueda en esa celda definir cuales hojas serán seleccionadas antes de ejecutar la macro. necesitaría tanto el texto a incluir en el Array() como en la celda a la que haría referencia.
    agradecería una ayuda ya que no he podido lograrlo.

    1. Hola Matías,
      si no he entendido mal, necesitas una macro que lea el contenido de una celda y que dicha celda contenga el nombre de ciertas hojas de un libro? Y por qué no escribes las hojas en celdas diferentes? Sería mucho más sencillo.
      Saludos!

      1. Hola Quique,
        Vi que comentaste que Select y Activate no son lo mejor. Tengo 3 hojas a las que necesito esconder las filas si las celdas están vacías. Ya hice la macro que esconde las filas. El problema es que si no activo cada Hoja me marca error. No recuerdo como lanzar una macro para que haga operaciones en hojas diferentes sin activarlas o seleccionarlas. Muchas gracias.

    2. Creo que quedaría más elegante, si listas las hojas en un Listbox, activas la opción de multiselect =1, y con un botón haces que se impriman las hojas seleccionadas.

Comentarios cerrados.