Visual Basic para Aplicaciones - Eliminar filas base datos

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 8
Ha aumentado su posición en 11 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Eliminar filas base datos

Publicado por Joan (3 intervenciones) el 11/01/2021 23:25:31
Hola de nuevo foreros. Tengo una base de datos que introduciendo en la hoja de registro los datos me los guarda en la hoja de listado personal en orden alfabetico, hasta aqui perfecto, el "problema" me viene que cuando tengo que suprimir una fila de la hoja de datos no se como hacer la macro para ejecutarla. Lo ideal es que poner el nombre en la hoja del registro y busque en " listado personal" y elimine la fila correspondiente a ese nombre.Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Eliminar filas base datos

Publicado por Antoni Masana (498 intervenciones) el 12/01/2021 19:49:32
Lo primero que haría es:

1º- Recorrer la tabla de datos y contar cuantos registros se van a borrar,
2º- Informar de cuantos registros se han contabilizados.
3º- Si es cero salir.
4º- Borrar los registros.

Y esta seria la macro:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Sub Eliminar()
    Dim a As Long, Vacio As Byte, Tabla(6) As String
 
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Application.EnableEvents = False
    ActiveSheet.DisplayPageBreaks = False
 
    ' ---&--- PASO 1 - Hay datos ¿?
 
    Datos = 0
    For a = 13 To 18
        If Not Cells(a, "E") = Empty Then
           Tabla(a - 12) = Cells(a, "E"): Datos = Datos + 1
        End If
    Next
    If Vacio = 6 Then Exit Sub
 
    ' ---&--- PASO 2 - Hay registros para borrar
 
    Sheets("listado personal").Select
 
    Filas = 2
    Borra = 0
    While Cells(Filas, "A") <> ""
        Marca = 0
        For a = 1 To 6
            If Len(Tabla(a)) > 0 Then
                If Cells(Filas, a) = Tabla(a) Then Marca = Marca + 1
            End If
        Next
        If Marca = Datos Then Borra = Borra + 1
        Filas = Filas + 1
    Wend
 
    ' ---&--- Paso 3 - Confirme borrar
 
    If Borra = 0 Then
        MsgBox "No hay ninguna coincidencia", vbCritical + vbOKOnly, "ELIMINAR REGSTROS"
        Exit Sub
    Else
        Opc = MsgBox("Se han encontrado " & Borra & " coincidencias." & vbCrLf & _
                    "¿Desea eliminar los registros?", _
                     vbQuestion + vbYesNoCancel + vbDefaultButton3, _
                    "ELIMINAR REGSTROS")
        If Opc <> vbYes Then Exit Sub
    End If
 
    ' ---&--- Paso 4 - Borrar Filas
 
    While Cells(Filas, "A") <> ""
        Marca = 0
        For a = 1 To 6
            If Len(Tabla(a)) > 0 Then
                If Cells(Filas, a) = Tabla(a) Then Marca = Marca + 1
            End If
        Next
        If Marca = Datos Then
            Rows(Filas & ":" & Filas).Select: Application.CutCopyMode = False
            Selection.Delete Shift:=xlUp
        End If
        Filas = Filas - 1
    Wend
    Sheets("Registro").Select
 
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Application.EnableEvents = True
    ActiveSheet.DisplayPageBreaks = True
    Application.CutCopyMode = False
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 11 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Eliminar filas base datos

Publicado por Joan (3 intervenciones) el 12/01/2021 23:17:22
Hola Antoni gracias por interesarte. No he sabido interpretar lo que me comentas, yo lo que necesitaría es que al poner un nombre en la hoja "registro" y con la casilla eliminar fuera a la hoja "listado personal" buscara el nombre y si lo encuentra borre toda la fila donde esta ese nombre.
vuelvo a enviar el archivo porque el otro tenia error (problemas con los idiomas)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 11 puestos en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Eliminar filas base datos

Publicado por Joan (3 intervenciones) el 16/01/2021 13:00:36
Hola Antoni ,no funciona la macro , me dice que encuentra el registro pero no lo elimina.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar