Trabajar en Excel tiene como requisito necesario un buen manejo de hojas, pues es la plataforma donde se trabaja con distintas bases de datos, gráficos, tablas, etc.
Al respecto, Visual Basic permite codificar las principales acciones para un buen manejo de hojas, que incluyen, básicamente, crear una hoja nueva, asignarle un nombre, elegir la posición de esta hoja creada, mover la hoja, ordenarla, seleccionar cualquier hoja determinada y, finalmente, eliminar una hoja.
A continuación se presentan los códigos para cada acción.
En primer lugar, asignar un nombre a la hoja activa se realiza ejecutando la macro "nombrehoja"
Sub nombrehoja()
trabajo1 = ActiveWindow.Caption
Windows(trabajo1).Activate
End Sub
Una segunda macro permite insertar una hoja nueva antes de la hoja denominada "trabajo1"
Sub insertahoja()
ActiveWorkbook.Sheets.Add Before:=Worksheets("trabajo1")
End Sub
Una tercera macro permitirá insertar una hoja nueva antes de la hoja última, en este caso "hoja 3". El nombre de la hoja será "trabajo1(2)" porque previamente ya se creó una hoja llamada "trabajo1".
Sub intertahoja2()
Sheets("trabajo1").Copy before:=Worksheets(Worksheets.Count)
End Sub
Es importante señalar que si se desea que la hoja se inserte después de la última hoja existente solo se cambia en e l código anterior before por after.
Por otro lado, mover una hoja también resultado muy sencillo. La macro siguiente permitirá mover la "hoja 3" después de "trabajo1", si se desea que sea antes solo se cambia before por after.
Sub moverhoja()
Worksheets("hoja3").Move After:=Worksheets("trabajo1")
End Sub
Una quinta macro permite ordenar alfabéticamente las hojas existentes.
Sub ordenahoja()
intNumeroHojas = ActiveWorkbook.Worksheets.Count
For i = 1 To intNumeroHojas
For j = i To intNumeroHojas
If LCase(Worksheets(j).Name) < LCase(Worksheets(i).Name) Then
Worksheets(j).Move Before:=Worksheets(i)
End If
Next j
Next i
End Sub
Por último, si se desea eliminar una hoja se ejecuta el siguiente código.
Sub eliminahoja()
Application.DisplayAlerts = False
For i = 1 To Sheets.Count
Sheets(i).Activate
xxx = ActiveCell.Worksheet.Name
If xxx = "trabajo" Then
ActiveWindow.SelectedSheets.Delete
End If
Next
Application.DisplayAlerts = True
End Sub
Elaborado por: Jennifer De la Cruz Guillén
21/06/2013 a las 5:18 pm
Buena tarde, me gusto mucho tu aporte
Yo tengo una duda , por ejemplo , tengo una tabla dinamica que al darle doble clic a la celda de algun dato de resultado, (o clic derecho mostrar detalles) me genera una hoja nueva denominada segun sea el caso hoja1, hoja 2 , depende de cuantas veces genere el reporte, cada vez que pasa esto me direcciona a esa hoja, pero si requiero eliminarla con un macro grabado desde crear macro , solo funciona en la hoja que tenga el nombre que se grabo en el macro (hoja1) pero si genero otro reporte me crea hoja 2, y en ese ya no funciona.
Algun aporte que me pueda ayudar.
y Referente a esta hoja es posible darle inscruciones a la tabla dinamica que esa hoja la genere en un nuevo libro.
Gracias
11/06/2015 a las 10:22 pm
Saludos Desde Valencia Venezuela.
Una preguntilla:
Qué instrucción puedo usar para asignar a una variable string el nombre de una tabla. por egemplo: al ubicarme en el encabezado de la tabla12, usar una instrucción(que es la que no conozco) para lo siguiente:
codigo VBA:
TablaActiva = ?????????
donde el valor resultante de la variable TablaActiva="Tabla12" por ejemplo
Muchas gracias por tu ayuda
15/07/2015 a las 11:25 am
Buenos días, me podrían ayudar en como evaluar que la hoja siguiente a la hoja activa no esté vacía?.
Muchas gracias por la colaboración
28/06/2017 a las 11:51 am
Cómo puedo eliminar varias hojas ocultas con diferentes nombres con macro Visual Basic?.
Gracias.