Visual Basic - Bucle se dispara solo, no me copian los datos

Life is soft - evento anual de software empresarial
 
Vista:

Bucle se dispara solo, no me copian los datos

Publicado por CARLOS HERRERA (2 intervenciones) el 20/12/2019 22:00:25
Hola buenas tardes

La verdad soy nuevo en esto del visual basic pero he estado trabajando en un archivo automatizado pero presento fallas que no puedo solventar, la idea de este archivo es que la hoja llamada PERSONAL contenga una base de datos de empleados y la hoja llamada HIJOS contenga los nombres de los hijos de los empleados relacionados con su debido padre o madre, en la hoja Personal solicito que cuando en la celda C5 se ponga la palabra si se despliegue un input que solicite la cantidad de veces que se va a abrir el form donde se pondrán los datos de los hijos y que a su vez en la hoja hijos una vez se ingrese la información en el form vayan quedando los registros con el nombre del padre o madre correspondientemente relacionados, pero los datos de los padres en algunas ocasiones se han pegado y en otras no, adicional el form se dispara cada vez que cambio de celda en la hoja PERSONAL y por ultimo cuando se pegan los datos del form estos se pegan no en la siguiente celda libre sino que se pegan sobre las celdas que ya tienen contenido, favor su ayuda para terminar este proyecto, de ante mano gracias.



SHEETS PERSONAL

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Set Target = Range("C" & Rows.count).End(xlUp)
If Target.Value = "SI" Then
Call COPIAR
End If
If Target.Value = "SI" Then

Call INGRESAR

End If

End Sub
Sub COPIAR()

COPIARDATOS

End Sub
Sub INGRESAR()

Dim I As Integer
Dim intveces As Integer

intveces = InputBox("Ingresa el numero de hijos:", "Numero de Hijos", 0)
If intveces = 0 Then
Unload UserForm1
End If

For I = 1 To intveces

UserForm1.Show

Next I

End Sub

USERFORM1

Private Sub CERRAR_click()
Unload UserForm1
End Sub
Private Sub GUARDAR_click()
CREAREGISTROS
Unload UserForm1
End Sub
Sub CREAREGISTROS()

Dim contfila As Long
Dim cont As Long

Set hoja = Sheets("HIJOS")
If Trim$(TextBox1.Text) = Empty Or Trim$(TextBox2.Text) = Empty Then
MsgBox "POR", vbCritical, "datos imcompletos"
Exit Sub
End If

contfila = Sheets("HIJOS").Cells(Rows.count, 1).End(xlUp).Offset(0, 0).Row

hoja.Cells(contfila, 3).Value = UserForm1.TextBox1.Value
hoja.Cells(contfila, 4).Value = UserForm1.TextBox2.Value

UserForm1.TextBox1.Value = ""
UserForm1.TextBox2.Value = ""

End Sub

Private Sub UserForm_Click()

End Sub


MODULO4

Sub COPIARDATOS()

Dim nombre As String
Dim cedula As String
Dim cont As Long

Dim ultimafila As Long
Dim contfila As Long
Dim palabrabusqueda As String

Set Hoja2 = Worksheets("PERSONAL")

palabrabusqueda = SI

ultimafila = Sheets("PERSONAL").Range("A" & Rows.count).End(xlUp).Row

If ultimafila < 4 Then
Exit Sub
End If

For cont = 4 To ultimafila
If Sheets("PERSONAL").Cells(cont, 3) Like palabrabusqueda Then
nombre = Sheets("PERSONAL").Cells(contfila, 1).Value
cedula = Sheets("PERSONAL").Cells(contfila, 2).Value

contfila = Sheets("HIJOS").Range("A" & Rows.count).End(xlUp).Row
Sheets("HIJOS").Cells(contfila + 1, 1) = nombre
Sheets("HIJOS").Cells(contfila + 1, 2) = cedula
End If
Next cont


End Sub
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

Bucle se dispara solo, no me copian los datos

Publicado por CARLOS HERRERA (2 intervenciones) el 21/12/2019 14:56:43
Revisando el código veo que la razón por la que el evento se ejecuta cada vez que cambio de celda es porque el código esta en la hoja, ahora lo que realmente quisiera saber si pueden ayudarme es sabiendo como ejecutar el evento pero desde un modulo para que no se dispare cada vez que cambio de celda.
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