Formato rexto en imagen

3 envíos / 0 nuevos
Último envío
MiltonCordova
Imagen de MiltonCordova
Offline
última acción: Hace 1 año 4 semanas
alta: 09/06/2017 - 18:27
Puntos: 255
Formato rexto en imagen

Saludos me pueden ayudar muy comedidamente con la siguiente macro: mediante esta macro solo funciona cuando en la celda A1 ingreso manualmente al valor ya sea 1 o 0, lo que necesito es que en la celda A1 el valor venga de una formula de la celda B5.

 

Otra situacion es cuando se ejecuta con 1 salta a la celda E7 y cuando se ejecuta con 0 salta a la cleda B14, lo que deseo es que no salte ni seleccione ninguna celda.

 

La hoja la he protejido con una contraseña "X".

 

Favor analizar esta macro que he logrado

 

Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect "X"
    Application.ScreenUpdating = False

 

  If Not Intersect(Target, Range("A1")) Is Nothing Then
If Range("A1").Value = 1 Then
ActiveSheet.Shapes("Rectangle 1").Select
    Selection.Font.ColorIndex = 0
    ActiveSheet.Shapes("Rectangle 2").Select
    Selection.Font.ColorIndex = 0
    Range("C7").Select
    ActiveSheet.Shapes("Line 3").Select
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 64
    Selection.ShapeRange.Line.Visible = msoTrue
    
ActiveSheet.Protect "X"

 

Else
If Range("A1").Value = 0 Then
ActiveSheet.Shapes("Rectangle 1").Select
    Selection.Font.ColorIndex = 2
    ActiveSheet.Shapes("Rectangle 2").Select
    Selection.Font.ColorIndex = 2
    Range("B14").Select
    ActiveSheet.Shapes("Line 3").Select
    Selection.ShapeRange.Line.ForeColor.SchemeColor = 9
    Selection.ShapeRange.Line.Visible = msoTrue
    ActiveSheet.Protect "X"

    End If
    End If
    End If
End Sub

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 1 día 24 mins
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntosadministrador
alta: 27/12/2006 - 23:26
Puntos: 11175
Se ejecuta al escribir el

Se ejecuta al escribir el valor a mano en la celda, porque está puesto en el evento Worksheet_Change

Este evento se produce cuando cambia algo en la hoja, es decir, por ejemplo cuando tecleas un valor en una celda.

pero cuando la hoja se recalcula y una fórmula ahora da otro resultado, eso no lo interpreta Excel como un cambio de la hoja, porque la fórmula es la misma de antes. lo que ha cambiado es el resultado de esa fórmula.

Si lo que quieres es que se ejecute cuando cambie el resultado de una fórmula que tienes en la hoja, tendrás que realizar la comprobación cada vez que se recalcule la hoja, para ver si ha cambiado el resultado de la celda que te interesa

Esto es el evento Calculate. pon ahí tu código

 

Private Sub Worksheet_Calculate()

    If Range("A1").Value = 1 Then

    '...

    ElseIf Range("A1").Value = 0 Then

    '...

    End If

End Sub

 

claro, esto se estaría ejecutando con cada recálculo, porque comprobamos el valor de la celda, también se ejecutaría si el valor sigue siendo 1 o 0. Para evitarlo, podrías tener alguna variable estática donde almacenar el valor, para comprobar si éste cambia. 

 

 

Sobre tu segunda pregunta, no quieres que salte ni se seleccione ninguna celda, pues dos opciones:

opción 1: comenta las líneas que tienes al final que cambian las celdas

opción 2: añade una última línea que seleccione la celda final donde quieres que termine tu macro

 

------
Ya sé Excel, pero necesito más.

MiltonCordova
Imagen de MiltonCordova
Offline
última acción: Hace 1 año 4 semanas
alta: 09/06/2017 - 18:27
Puntos: 255
Gracias Master excelente

Gracias Master excelente ayuda a esta consulta.

Debate solucionado cerrado