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 Sub
como 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.