carmita | |
| 2005-05-23 21:56 - Respuestas: 3 - Tema nº: 34503
Tengo un problema en el siguiente procedimiento, se realiza un bucle infinito y no se porque ni como solucionarlo, puede alguien ayudarme.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim valor
If columnaactual = 1 Then
valor = Hoja1.Cells(filaactual, 1)
If IsDate(valor) Then
Hoja1.Cells(filaactual, 3).Formula = "5"
Hoja1.Cells(filaactual, 2) = Weekday(valor, 2)
Else
MsgBox "Ingrese una fecha válida", vbInformation, "Horarios"
End If
Else
MsgBox "no es la columna indicada"
End If
End Sub
Si yo comento la linea: Hoja1.Cells(filaactual, 3).Formula = "5", o la siguiente a esta, ya no se produce ese bucle pero yo necesito que esteb las dos lineas, puede alugien ayudarme a solucionar este problema?
Gracias | |
|
|
Hurricane | |
|
Re: Bucle infinito en el procedimiento: - 2005-05-24 13:18 - Respuesta 2
Cuéntanos si la siguiente indenntación es la correcta....
Code: Private Sub Worksheet_Change(ByVal Target As Range)
Dim valor
If columnaactual = 1 Then
valor = Hoja1.Cells(filaactual, 1)
If IsDate(valor) Then
Hoja1.Cells(filaactual, 3).Formula = nulo;5nulo;
Hoja1.Cells(filaactual, 2) = Weekday(valor, 2)
Else
MsgBox nulo;Ingrese una fecha válidanulo;, vbInformation, nulo;Horariosnulo;
End If
Else
MsgBox nulo;no es la columna indicadanulo;
End If
End Sub
Si no lo es, tendrás que entrar a revisar bién el cierre de las sentencias IF.
Saludos
HURRICANE
| |
|
|
Hurricane | |
|
Re: Bucle infinito en el procedimiento: - 2005-05-24 22:18 - Respuesta 3
Creo que ya encontré el problema. Estás capturande el evento Change, es que es llamado cada vez que cambia un valor en la Hoja. Cada vez que llamas a Hoja1.Cells(filaactual, 3).Formula = "5" estás haciendo un cambio y, por lo tanto, llamando nuevamente al evento Change. Una solución podría ser verificar el valor de las celdas a cambiar antes de darle un valor, de modo que si son diferentes al valor que le vas a asignar, ahí hagas el cambio.
Code: Private Sub Worksheet_Change(ByVal Target As Range)
Dim valor
If columnaactual = 1 Then
valor = Hoja1.Cells(filaactual, 1)
If IsDate(valor) Then
Hoja1.Cells(filaactual, 3).Formula nulo;nulo; nulo;5nulo; then
Hoja1.Cells(filaactual, 3).Formula = nulo;5nulo;
End If
If Hoja1.Cells(filaactual, 2) nulo;nulo; Weekday(valor, 2)
Hoja1.Cells(filaactual, 2) = Weekday(valor, 2)
End If
Else
MsgBox nulo;Ingrese una fecha válidanulo;, vbInformation, nulo;Horariosnulo;
End If
Else
MsgBox nulo;no es la columna indicadanulo;
End If
End Sub
Espero que te sirva la solución. Saludos
HURRICANE
| |
|
|
carmita | |
|
Re: Bucle infinito en el procedimiento: - 2005-05-24 22:38 - Respuesta 4
Gracias por tu ayuda, ya lo solucione. | |
|
|
|