¿Cómo crear macro que elimine rango un rango de filas a partir de un dato en columna?

Tengo un programa donde manejo una base de datos en una tabla que tiene donde inicia desde b7 hasta x7 para un registro y cada celda almacena información importante pero lo útil es que los registra con un numero de registro único, lo anterior en una hoja llamada ''Registros'', pero tengo otra hoja llamada ''Principal''donde lleno un formulario que al guardarlo una macro me lo envía a mi tabla en la hoja de registros. Lo que necesito es que en mi hoja Principal tener la opción de eliminar mediante una macro, un cierto registro, donde yo le diga que numero de registro deseo eliminar de la columba b, pero solo seleccione el rango por ejemplo de b8 a x8 para eliminar y no toda la columna.

2 Respuestas

Respuesta
2

Te anexo la macro. No entendí si tu formulario es con las celdas o con controles. Estoy asumiendo que es con celdas, entonces cambia "A2" por la celda donde vas a capturar el número.

Si estás capturando el número en un textbox, entonces cambia esta línea:

num = h1.Range("A2")

Por esta:

num = h1.TextBox1.Value



Sub Eliminar()
'Por.Dante Amor
    '
    Set h1 = Sheets("Principal")
    Set h2 = Sheets("Registros")
    num = h1.Range("A2")        'número de registro único
    '
    If num = "" Then
        MsgBox "Captura un número"
        Exit Sub
    End If
    '
    If IsNumeric(num) Then num = Val(num)
    Set b = h2.Columns("B").Find(num, lookat:=xlWhole)
    If Not b Is Nothing Then
        h2.Rows(b.Row).Delete
        MsgBox "Registro eliminado"
    Else
        MsgBox "El número no existe    "
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Muchas gracias por tu ayuda, el trabajo lo hace bien, pero necesito que unicamente borre la fila desde la columna ''B'' hasta la ''X'' unicamente y no toda la fila entera ya que en la columna ''z'' tengo un concentrado de información y al eliminar un registro afecta y borra las fórmulas e información que tengo en columnas posteriores a la ''x''

Dejare dos imágenes, la primera esta seleccionado el registro numero 3 antes de eliminarlo y en la seugnda imagen el registro numero 3 ya eliminado pero donde afecta a la tabla que tengo ala derecha

Te anexo la macro actualizada

Sub Eliminar()
'Por.Dante Amor
    '
    Set h1 = Sheets("Principal")
    Set h2 = Sheets("Registros")
    num = h1.Range("A2")       'número de registro único
    '
    If num = "" Then
        MsgBox "Captura un número"
        Exit Sub
    End If
    '
    If IsNumeric(num) Then num = Val(num)
    Set b = h2.Columns("B").Find(num, lookat:=xlWhole)
    If Not b Is Nothing Then
        h2.Range("B" & b.Row & ":X" & b.Row).Delete Shift:=xlUp
        'h2.Rows(b.Row).Delete
        MsgBox "Registro eliminado"
    Else
        MsgBox "El número no existe    "
    End If
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Respuesta
1

Solo crea un botón en la hoja principal y pega este código

Sub borrar_registros()
Set datos = Worksheets("registros").Range("b2").CurrentRegion
With datos
    ask = Val(InputBox("Teclee el registro a borrar", "AVISO"))
    If ask = Empty Then End
    cuenta = WorksheetFunction.CountIf(.Columns(1), ask)
    fila = WorksheetFunction.Match(ask, .Columns(1), 0)
    Set borrar = .Rows(fila).Resize(cuenta)
    ask2 = MsgBox("Borrar rango " & borrar.Address, vbYesNo, "AVISO")
    If ask2 = 6 Then borrar.EntireRow.Delete: MsgBox ("Rango Borrado"), vbApplicationModal, "AVISO"
End With
set datos=nothing: set borrar=nothing
End Sub

Muchas gracias, pero al momento de ejecutar la macro me da error en la línea 7

Puede ser una de dos cosas o el registro es alfanumérico o este no existe, ¿puedes subir una captura de pantalla para ver tus datos?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas