ayer estuve peleandome con haver y con vba, y descubrimos un fallo, pero no lo he conseguido solucionar, sólo chapucearlo para que desaparezca, en mi opinión el código es correcto (evidentemente no). pero ni aún haciendo desaparecer ese fallo, consigo hacer funcionar el programa porque hay algún otro error claro está.
el evento no está en personal.xls, está en una hoja de cálculo que yo he creado.
si, uso los puntos de interrupción, y el mayor problema que tengo es que no me salta ningún error, simplemente se deja de ejecutar el código, y para más inri, tengo el evento change programado en dos vertientes, de forma que si se produce un cambio de edición en una celda se ejecutará una secuencia, y si el cambio es en otra se ejecutará otra secuencia, pero ambas secuencias se parecen bastante, hasta el punto de que las dos llaman al sub procedimiento que me da problemas, y en un camino funciona correctamente y en el otro no, porsupuesto utilizando la misma lógica, situandome en la misma celda después de haber activado el evento change y tal.
no entiendo que quieres decir con aquí en la entrada, el application.enableevents = false lo hago nada más iniciar el evento change para evitar que se reactive, pero ayer haver me dijo que era posible que al inhabilitar los eventos no saltara el mensaje de error, porque yo mismo lo estaba capando, y por consiguiente quité todas las líneas aplication.enableevents, pero el resultado es el mismo, la misma interrupción, en la misma línea.
en concreto este es el código completo del sub que me da problemas, y la línea a partir de la cual se interrumpe el proceso es activecell.value = modelo, es decir la primera, pero esta línea no es imprescindible para el "camino" de evento change que me ocupa, por lo que la puedo eliminar tranquilamente, pues bien, si lo hago pongo un punto de interrupción en la siguiente línea, y ocurre exactamente lo mismo, NADA
Private Sub calcula_controladores_minimos(modelo As String) ActiveCell.Value = modelo
ActiveCell.Offset(0, -1).Value = 1
While 4 * ActiveCell.Offset(0, -1).Value < ActiveCell.Offset(5, -1).Value
ActiveCell.Offset(0, -1).Value = ActiveCell.Offset(0, -1).Value + 1
Wend
End Sub
con esto entiendo que hasta aquí las instrucciones en cuanto a condiciones para escoger un "camino" u otro son correctas, puesto que he llegado donde pretendía llegar porque motivo no ejecutar una instrucción tan sencilla como asignar un valor a una celda???? me tiene totalmente desconcertado.
cuando ejecuto paso a paso, veo que modelo corresponde con la cadena de texto correcta, ActiveCell.Offset(0, -1).Value tiene un valor numérico entero positivo adecuado (aunque en realidad me da igual puesto que ese valor lo voy a machacar) y ActiveCell.Offset(5, -1).Value tiene el valor vacio, siendo que en la hoja de excel hay un valor numérico entero positivo provinente de una fórmula de excel (este es el fallito del que hablaba) para "chapucear" este fallo y que en la ejecución paso a paso ActiveCell.Offset(5, -1).Value tenga un valor numérico lo consigo machacando la fórmula de la hoja de cálculo de excel y tecleando 1 (por ejemplo). una vez hecho esto, al volver a la ejecución paso a paso ActiveCell.Offset(5, -1).Value ya tiene el valor 1, sin embargo el programa sigue sin funcionar como debería.
estoy pensando probar el mismo código en otro pc por si fuera el mío que está mal... (ójala fuera esto, pero lo dudo muy mucho)
Supongo que ahora mismo habrás perdido 5 minutos de tu tiempo puesto que no habrás entendido nada, pero consuelate porque yo llevo muchas horas ya perdidas con esta kk
Gracias por vuestro interés, un saludo desde Valencia