al ocurrir un error en tiempo de ejecucion de una macro, puedes pulsar el boton "depurar"
(a menos que tu proyecto de macros este protegido contra visualizacion si es asi, desprotegelo)
lo que te lleva a la linea que origino dicho error y desde el editor de vba puedes "ver" el valor de las variables
(simplemente posicionando el puntero "sobre" el nombre de alguna variable dentro de ese procedimiento)
saludos,
hector.
__ OP __
--
Me alimento del conocimiento de todos
> Estamos claros en eso...
> Tal vez no me explique bien..
> El problema es que en varias partes del codigo copio y pego datos a otras hojas
> y luego que he copiado esos varios datos "un looop", al finalizar la macro
> (No se detiene" en realidad no es un error sino que me coloca uno de los datos en una ubicacion (celda) no deseada")
> por eso te digo que debo interceptar el codigo justo cuando esa celda cambie. como lo logro ??
- una opcion es colocar un punto de inspeccion en la linea donde se realiza el avance
(haz un clic en el borde -gris- al lado izquierdo precisamente en esa linea de cdigo)
cada vez que la ejecucion alcance ese punto, se detiene, muestra la linea de inspeccion, y para continuar pulsas {F8}
- otra alternativa pudiera ser la emision de puntos con la informacion "relevante" (variable, ciclo, valores, celda, ... ???)
ya sea en la ventana de inmediato: Debug.Print (que ?), en un msgbox, en un rango de celdas, ???
- (creo que) esta ultima opcion seria mas util en caso de que tu "loop" sea de varios ciclos ({F8} en cada uno de ellos ?)
saludos,
hector.
__ previos __
>> al ocurrir un error en tiempo de ejecucion de una macro, puedes pulsar el boton "depurar"
>> (a menos que tu proyecto de macros este protegido contra visualizacion si es asi, desprotegelo)
>> lo que te lleva a la linea que origino dicho error y desde el editor de vba puedes "ver" el valor de las variables
>> (simplemente posicionando el puntero "sobre" el nombre de alguna variable dentro de ese procedimiento)
>>
la pregunta mas directa seria:
como puedo "detectar" en tiempo de ejecucion , cuando "cambie" el valor de
la celda F1 de la Hoja1
tal vez en el modulo de la hoha en el evento change ??
el probleba es que en algunas partes de las macros utilizo enableevents=false
como creo un punto de inspeccion para esa celda ?? como detengo la ejecucion
al cambiar el valor de la celda ???
Gracias..
--
Me alimento del conocimiento de todos
> la pregunta mas directa seria:
> como puedo "detectar" en tiempo de ejecucion , cuando "cambie" el valor de la celda F1 de la Hoja1
> tal vez en el modulo de la hoha en el evento change ??
> el probleba es que en algunas partes de las macros utilizo enableevents=false
> como creo un punto de inspeccion para esa celda ?? como detengo la ejecucion al cambiar el valor de la celda ???
(creo que) inhabilitar los eventos no impide los (re)calculos del modelo (a menos que tambien lo pongas en manual)
de lo que no estoy seguro es si por la "rapidez" en la ejecucion del bucle, algun cambio se quede "perdido en el limbo" (???)
por lo que te convendria (para la revision que pretendes) NO inhabilitar los eventos NI poner el modo de recalculo en manual
y... probar con la sugerencia del mensaje anterior ...
===
>> - otra alternativa pudiera ser la emision de puntos con la informacion "relevante" (variable, ciclo, valores, celda, ... ???)
>> ya sea en la ventana de inmediato: Debug.Print (que ?), en un msgbox, en un rango de celdas, ???
>>
>> - (creo que) esta ultima opcion seria mas util en caso de que tu "loop" sea de varios ciclos ({F8} en cada uno de ellos ?)
===
saludos,
hector.
Function CUANDOCAMBIA(A As Range)
If A <> "" Then
Stop
End If
CUANDOCAMBIA = A
End Function
Gracias Again...
Saludos.
--
Me alimento del conocimiento de todos
(yo creo que) solo le diste una "aspirina" a tu (seguramente) laaaargo proceso de datos (con la udf...)
no estas determinando las causas por las que se "pegaba" (indebidamente) en la celda F1 (ademas...)
usar "Stop" es (casi) lo mismo que usar una instruccion del tipo: On Error Resume Next (?)
saludos,
hector.
__ OP __
> Lo resolvi de la siguiente manera: cree esta udf
> y luego en una celda de la hoja donde se producia el error coloque =cuandocambia(F!)
> (F1 es la celda donde se "pegaban" los datos indebidamente, esta la borro y luego ejecuto mis macros )
Private Sub SpinButton1_Change()
Dim X As Integer, F As Integer
ActiveCell.Activate
Application.EnableEvents = False
convierte
xx = Range("B7").Value ***********ESTA KINEA ESTABA COLOCADA DOS FILAS
ABAJO
If Range("bj23") Then
******************** ES DECIR AQUI
***************
VBAProject.Hoja13.Range(Range(Cells(27 + xx, 7), Cells(27 + xx,
17)).Address) = Range("BG19:BQ19").Value
End If
If Range("bj25") Then
VBAProject.Hoja1.Range("F" & xx + 1) = VBAProject.Hoja6.Range("Q8")
**************AQUI SE DETUVO LA MACRO***************************
PORQUE xx ERA IGUAL A NOTHING
VBAProject.Hoja1.Range(Range(Cells(Range("BI1"), 7), Cells(Range("BI1") +
14, 18)).Address) = Range("BI26:BT40").Value
End If
VBAProject.Hoja6.Unprotect
VBAProject.Hoja6.Range("b7") = VBAProject.Hoja6.Range("b6")
copia_db_a_apu
If Range("a25") Then Range("q8").Locked = True Else Range("q8").Locked = False
VBAProject.Hoja6.Protect
Application.EnableEvents = True
'Application.ScreenUpdating = True
End Sub
Saludos !
--
Me alimento del conocimiento de todos