Eliminar fila y eliminar hoja con botón

Trataré de ser lo más específico con lo que me he trabado, espero me regalen unos minutos de su tiempo, gracias!
El objetivo es llenar una tabla de 3 columnas con distintos datos, tengo un botón que al dar click, me permite generar una nueva fila en la tabla para poderla llenar y al mismo tiempo, crea una hoja nueva que me servirá para cargar específicamente los datos del registro en cuestión; tengo que generar un botón que sea capaz de que cuando elimine una fila, tambien elimine la hoja de cálculo que crea con anterioridad con el otro botón.

Espero haber sido especifico, el nombre con el que me genera las hojas es "Geometría e Inf Técnica, Geometría e Inf Técnica (2), Geometría e Inf Técnica (3),... Etc" estas hojas las genera a partir de una hoja que se llama "Localización de puntos de luz"

En el código que generé grabando la macro, me permite borrar las hojas pero solo con un nombre; por ejemplo: solo borra la hoja "Geometría e Inf Técnica", posteriormente no borra las demás al eliminar las filas consecutivas.

Espero haber sido lo más específico posible y poder contar con la ayuda de ustedes, los expertos!
De antemano muchas gracias, saludos.

Sub Localización_borrar_fila()
'
' Localización_borrar_fila Macro
'

'
Rows("16:16").Select
Range("B16").Activate
Selection.Delete
Range("C16").Select
Sheets("Geometría e Inf Técnica").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Localización de puntos de luz").Select
End Sub

Este es el código que se generó al grabar la Macro!

1 Respuesta

Respuesta
1

Cada que insertes una fila y crees la hoja, tenemos que guardar en la fila insertada el nombre de la nueva hoja, de otra forma no sabríamos cuál hoja borrar.

Por ejemplo, para insertar la fila, la hoja y el nombre:

Sub Macro5()
'
' Macro5 Macro
'
'
    Set h1 = ActiveSheet
    fila = ActiveCell.Row
    Rows(fila).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Sheets("Geometría e Inf Técnica").Copy after:=Sheets(Sheets.Count)
    Set h2 = ActiveSheet
    nombre = h2.Name
    h1.Select
    h1.Range("Z" & fila).Value = nombre
End Sub

Estoy poniendo en la celda Z de la nueva fila el nombre de la nueva hoja.


Entonces cuando quieras borrar la fila, tomamos el nombre de la celda Z y borramos esa hoja:

'
Sub Localización_borrar_fila()
'
' Localización_borrar_fila Macro
'
    Application.DisplayAlerts = False
    fila = ActiveCell.Row
    nombre = Range("Z" & fila)
    Rows(fila).Delete
    For Each h In Sheets
        If h.Name = nombre Then
            h.Delete
            Exit For
        End If
    Next
    Sheets("Localización de puntos de luz").Select
End Sub


.

.

Perfecto, solo que al insertar la fila, siempre me aparece el mismo nombre "Localización de puntos de luz"
Y al querer borrar, me sigue apareciendo lo mismo, solo se borra una pestaña y las siguientes no se borran, escribiré la programación de ambos botones, ojala puedas ayudarme amigo :)

1.

Sub Localización_insertar_fila()
'
' Localización_insertar_fila Macro
'

'
Set h1 = ActiveSheet
fila = ActiveCell.Row
Rows("16:16").Select
Range("B16").Activate
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Range("C15:J15").Select
Selection.Copy
Range("C16").Select
ActiveSheet.Paste
Range("C16").Select
Application.CutCopyMode = False
Rows("16:16").EntireRow.AutoFit
Sheets("Geometría e Inf Técnica").Select
Sheets("Geometría e Inf Técnica").Copy Before:=Sheets(5)
Sheets("Localización de puntos de luz").Select
Set h2 = ActiveSheet
nombre = h2.Name
h1.Select
h1.Range("Z" & fila).Value = nombre
End Sub

2.

Sub Localización_borrar_fila()
'
' Localización_borrar_fila Macro
'

'
Rows("16:16").Select
Range("B16").Activate
Selection.Delete
Range("C16").Select
Sheets("Geometría e Inf Técnica").Select
ActiveWindow.SelectedSheets.Delete
Sheets("Localización de puntos de luz").Select
Application.DisplayAlerts = False
fila = ActiveCell.Row
nombre = Range("Z" & fila)
Rows(fila).Delete
For Each h In Sheets
If h.Name = nombre Then
h.Delete
Exit For
End If
Next
Sheets("Localización de puntos de luz").Select
End Sub

Olvidé mencionar que también borra la hoja de Localización de puntos de luz,
Para evitar confusiones podríamos llamarlas Hoja1 y Hoja2 

Es un ejemplo, lo debes de adaptar a tu código.

Ya que en tu pregunta solamente pusiste el código de borrar.

Lo pusiste mal, fíjate bien en mi código.

Después de esta línea:

Sheets("Geometría e Inf Técnica").Copy after:=Sheets(Sheets.Count)

Yo puse esta:

Set h2 = ActiveSheet

Y tu estás poniendo esto:

Sheets("Geometría e Inf Técnica").Copy Before:=Sheets(5)
Sheets("Localización de puntos de luz").Select
Set h2 = ActiveSheet


debe ser así:

Sheets("Geometría e Inf Técnica").Copy Before:=Sheets(5)
Set h2 = ActiveSheet
Sheets("Localización de puntos de luz").Select

prueba y me comentas.

Si no te funciona, tendré que hacer toda la macro.

Para hacer toda la macro me explicas, sin utilizar código, qué quieres hacer. Solamente utilizando explicaciones y ejemplos, no me pongas código en tu explicación.

.

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas