Macro para llenar base de datos desde Listbots
Estoy haciendo una base de datos en Excel para el pago y abonos de guardería, sucede lo siguiente tengo el UserForm1 que se genera y al dar clic en la hoja menú en “Iniciar”, luego en el botón buscar del UserForm1 este a su vez abre el UserForm3 que tiene un Listbox que muestra la base de datos, que al darle clic a uno de esos datos mostrados estos se pasen al UserForm1 en si la consulta es la siguiente:
- Luego que termino llenando los campos mes1, año y valor, al darle al botón registrar el cual tiene una macro asignada que verifica si en la hoja “Detalle” ya se encuentra registrado este dato filtrando por hijo y mes, si el dato existe este genere la alerta para ver si se quiere registrar pago de diferencia de meses o no, si la respuesta es “sí” que este cierre el UserForm1 y de apertura el Userform2 para registrar pagos por diferencias de meses, y si la respuesta es no que omita el proceso y no registre ningún dato, La macro que tengo asignada corre bien hasta donde verifica el dato repetido, pero cuando se abre el userform2 y graba en la hoja detalle lo que se había seleccionado en el UserForm1 igual se está grabando en la hoja “Detalle” cuando este debió cerrarse.
Espero puedas ayudarme adjunto el archivo de trabajo
La macro que tiene asignada el UserForm1 es la siguiente:
Private Sub CommandButton7_Click()
Dim NOMBRE As String
Dim VALOR As Integer
Dim COLEGIO As String
Dim EMPRESA As String
Dim HIJO As String
Dim MES As String
Dim AÑO As Integer
Dim i As Long
Dim fila As Long
Dim duplicados As Boolean
NOMBRE = TextBox1.Value
VALOR = TextBox2.Value
COLEGIO = TextBox3.Value
EMPRESA = TextBox4.Value
HIJO = TextBox5.Value
MES = ComboBox1.Value
AÑO = ComboBox2.Value
'Obtener la fila disponible
fila = Application.WorksheetFunction.CountA(Range("A:A")) + 1
duplicados = False
'Validar si se han ingresado datos duplicados
For i = 1 To fila
If Cells(i, 4).Value = UserForm1.TextBox5.Value Then
If Cells(i, 6).Value = UserForm1.ComboBox1.Value Then
'Se encontraron datos duplicados
MsgBox "Datos duplicados en la fila " & i
duplicados = True
End If
End If
Next i
If Not duplicados Then
Load UserForm2
UserForm2.Show
With Sheets("DETALLES")
i = .Range("A65536").End(xlUp)(2).Row
.Range("A" & i & ":H" & i).Value = Array(Label3.Caption, EMPRESA, NOMBRE, HIJO, COLEGIO, MES, AÑO, VALOR)
End With
'Notificar al usuario
MsgBox "Datos insertados en la fila " & fila
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
ComboBox1.Value = ""
ComboBox2.Value = ""
Unload UserForm1
End If
End Subcomo les dije antes, esta macro antes de insertar los datos en la hoja Detalles debe verificar que ya no se encuentre uno con el mismo nombre hijo, mes y año ya registrado en esa base, si existe debe cancelarse el userform1 y abrir el userform2.
