En este grupo En todos

Foro de Excel



Alertas en excel

Escrito por Pedro
el 24/07/2006

Hola a todos queria preguntar si es posible crear una especie de alerta (un texto que parpadee o cambie de color) cuando seleciono una opcion de checkbox en un formulario, un salu2.

Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 24/07/2006

Por ejemplo, en este codigo, al activar el checkbox, el texto de la celda D16 se pone de color rojo.

Private Sub CheckBox1_Click()
If CheckBox1. Value = True Then
Range("D16"). Select
Selection.Font.ColorIndex = 3
End If
End Sub

Abraham

César R
Distrito Federal, Mé...
Escrito por César R
el 24/07/2006

Otra opcion es la siguiente y la puedes descargar en el siguiente link:

CheckBox. Xls

César R
Distrito Federal, Mé...
Escrito por César R
el 24/07/2006

De todas formas pongo el código a tu disposición:

1. - Si consideras una hoja de Excel con un CheckBox y quieres modificar la celda "B7", haciendo parpadearla diciendo: "CheckBox Activado" el siguiente código puede servirte (Recuerda que puedes modificar "B7" -la ubicación de la celda- o "CheckBox Activado" - El texto que quieres que parpadee):

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Const Rango As String = "B7"
Private Const Mensaje As String = "CheckBox Activado"

Private Sub CheckBox1_Click()
    ' Autor: César Raúl U.R.
    Dim Celda As Range
       
    Set Celda = Range(Rango)
   
    With Celda
       . Font. Color = &HFF00&
   
        Do While CheckBox1. Value
            DoEvents
           . Value = IIf(. Value = Mensaje, "", Mensaje)
            Sleep 80
        Loop
       
       . Value = ""
    End With
End Sub

2. - Si consideras un formulacio con un checkbox y una etiqueta llamada Label1 esto puede servirte:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub CheckBox1_Click()
    ' Autor: César Raúl U.R.
    With Label1
        Do While UserForm1.CheckBox1.Value
            DoEvents
           . Visible = Not. Visible
            Sleep 80
        Loop
       
       . Visible = False
    End With
End Sub

Escrito por Pedro
el 25/07/2006

Hola otra vez, perdonadme por mi ignorancia, ¿Me podeis decir como tengo que asignar ese codigo a una casilla checkbox? Porque estoy copiando y pegando el codigo y no me funciona, un saludo.

Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 25/07/2006

Pues dale doble click a tu checkbox y se abrira el editor de VBA ahi pega el codigo.   Otor ejm:

Private Sub CheckBox1_Click()
If CheckBox1. Value = True Then
For parpadeo = 1 To 200
Range("i28"). Select
    Selection.Font.ColorIndex = 3
    For parpa = 1 To 50
    Next parpa
    Selection.Font.ColorIndex = 37
    For parpa2 = 1 To 50
    Next parpa2
    Next parpadeo
    End If
End Sub

Abraham

PD: Si hay texto en la celda i28 este "parpadea" al darle check al box


Escrito por Pedro
el 26/07/2006

Sigo sin conseguirlo, os pongo el error que me da_:

SE HA PRODUCIDO EL ERROR 424 EN TIEMPO DE EJECUCION

SE REQUIERE UN OBJETO


Luego en modo depuracion me pone en amarillo la linea que señalo

Sub Casilladeverificación89_AlHacerClic()
 -->If CheckBox89. Value Then
     For Parpadeo = 1 To 200
     Range("i28"). Font. ColorIndex = 3
     For parpa = 1 To 50
     Next parpa
     Range("i28"). Font. ColorIndex = 37
     For parpa2 = 1 To 50
     Next parpa2
     Next Parpadeo
     End If

End Sub


¿Que es lo que hago mal?


Gracias por la ayuda.

Abraham Valencia
Computacion e informatica microsoft mv...
Escrito por Abraham Valencia
el 26/07/2006

Para Pedro: tu objeto es Casilladeverificación89 no  CheckBox89, solo cambialo y funcionara.

Para Cesar: Gracias por los consejos. Te Cuento que sobre las variables y el poner  por separado el "select" y la "propiedad" de una celda, es una mala costumbre que se me quedo de antaño, ya que mis primeras macros fueron hechas solo y casi sin lectura. Ya con el tiempo le di mas fuerte al leer y me meti a un curso de "Excel Expertos". Pero me quedo la mala costumbre.

Abraham

César R
Distrito Federal, Mé...
Escrito por César R
el 27/07/2006

Que ondaaaaaa!

Sobre el sleep es una funcion API que puedes usarla en Excel, pero la documentación esta adaptada para C++, y es el siguiente link:

Http://msdn.microsoft.com/library/default. Asp? Url=/library/en-us/wcesdkr/html/wcesdkrSleep. Asp

He supuesto que conoces como implementar las funciones API, ya que como programador sabes usar Visual Basic y seguramente toda la suite de Visual Studio (considerando, además, que tomaste un curso de "Excel Expertos"), por eso no hago una mención innecesaria de su implementación.   Puedes probar mi código y analizarlo si gustas.

Saludos!

Sergio Muñoz
Lib. Gral Bernardo O...
Escrito por Sergio Muñoz
el 03/08/2006

He logrado que una celda cambie de color al pinchar un cuadro de verificacion, no obstante, cuando vuelvo a pinchar el cuadro (para desmarcarlo) la celda se queda del mismo color y no cambia al original.


Pregunta ¿Como puedo hacer que mi checkbox deje de la forma original a la modificada despues de desmarcarlo?


GRACIAS ¡

Luis Sanabria
Cartago, Costa Rica
Escrito por Luis Sanabria
el 28/03/2007

Lo que debes hacer es capturar el valor de la propiedad ColorIndex antes de que se ejecute el ciclo que le agrega el efecto de parpadeo.

Dim ColorInicial as Integer

ColorInicial =Range("i28"). Font. ColorIndex

Luego pones el código del ciclo que aparece en los "posts" anteriores.

Al final puedes poner una comprobación sobre si el checkbox no está marcado para reestablecer el color original.

If not CheckBox89. Value Then Range("i28"). Font. ColorIndex = ColorInicial

Listo, espero le funcione.

Jose Luis Rosas Alejandro
Campeche, México
Escrito por Jose Luis Rosas Alejandro
el 31/05/2007

Alguien me puede ayudar co exportar una sola hoja de excel aotro libro de excel aunque en libro de origen tenga varias hojas

Luis Sanabria
Cartago, Costa Rica
Escrito por Luis Sanabria
el 31/05/2007

Es un código muy sencillo:

1. Primero seleccionas la hoja

Sheets("Exportar"). Select

2. Después le dices que la copie indicándole el nombre del libro de destino y la ubicación.

Sheets("Exportar"). Copy After:=Workbooks("Libro2"). Sheets("Hoja3")

3. Digamos que lo quieres para exportar la hoja activa

ActiveSheet. Copy After:=Workbooks("Libro2"). Sheets("Hoja3")

Espero le funcione.

Jesús Bedoya
Valle del Cauca, Col...
Escrito por Jesús Bedoya
el 12/07/2007
Hola, soy nuevo en esto y no se como funciona peor voy a intentarlo ok de antemano gracias, tengo un problema en excel, quiero que una celda o la informacion que en ella se encuantre parpadee, me explico yo tengo en una celda A1 un valor en A2 otro y en A3 el valor de A1-A2 (A1 mayor que A2, A2 se incrementa , el valor lo doy yo), yo quiero qu ese valor parpadee ya sea el texto o la celda como tal o alguna variante pues necesito que al llegar la celda A3 a 0 o menor me diga o se haga notar , bueno de antemano agrdezco cualquier ayuda gracias mil
Luis Sanabria
Cartago, Costa Rica
Escrito por Luis Sanabria
el 12/07/2007

Dos soluciones: 1 sencilla y una compleja

1. Sencilla: Formato condicional

Selecciona A3 y luego en la barra de menú Formato - Formato condicional, elijes la condición "valor de la celda menor o igual que 0" (cero) y defines un formato personalizado.   Ahora bien, cambia el valor en A2 y observa el resultado

2. Compleja: VBA

Copia el sgte código en un módulo de VBA

Public datHora As Date
Public Const conIntervalo = 1 "un segundo
Public Const conRunMacro = "Tu_Sub" "tu proced.
Public acum As Integer "Acumulador

Sub StartTemporizador()
datHora = Now + TimeSerial(0, 0, conIntervalo)
"iniciar el temporizador
Application. OnTime _
Earliesttime:=datHora, _
Procedure:=conRunMacro, _
Schedule:=True
End Sub

Sub Tu_Sub()
Dim resultado As Integer

    resultado = Range("a3"). Value
    acum = acum + 1
   
    If resultado <= 0 Then
   
        If acum Mod 2 = 0 Then
            Range("A3"). Font. ColorIndex = 3
        Else
            Range("A3"). Font. ColorIndex = 1
        End If
       
        If acum >= 32000 Then
            acum = 0
        End If
    Else
        Range("A3"). Font. ColorIndex = 1
    End If
   
    "reiniciar el temporizador
    StartTemporizador
End Sub

Sub StopTemporizador()
On Error Resume Next
"desactivar el temporizador
Application. OnTime _
Earliesttime:=datHora, _
Procedure:=conRunMacro, _
Schedule:=False
End Sub


Ejecuta el procedimiento Tu_sub para ver cómo parapeda y luego cambia el valor en A2.

Para detenerlo, debes ejecutar Stop_temporizador.

Espero te sirva, saludos.

Jesús Bedoya
Valle del Cauca, Col...
Escrito por Jesús Bedoya
el 13/07/2007
Gracias por el dato pero no he podido aun, perdonen pues no soy muy ducho en esto, hago lo que me dicen pero sale eun error y no se que es, explcare de nuevo que quiero yo tengo un valor en una celda es cual es fijo (yo lo doy) llamamemos la celda A1 en la celda A2 coloco otro valor el cual es menor que el anterior, en A3 hago la resta A1-A2 , donde el resultado se visualiza en dicha celda, ahora aqui es donde quiero la posibilidad de que si ese valor es cero o menor el valor parpadee o la celda cambie de color, pues deseo saber cuando eso pase pero no estar pendiente de ello, en caso de llenar la casilla A2 y se cumpla con lo antes dicho que funcione, espero me puedan ayudar ok gracias mil por la ayuda y disculpen mi ignorancia , gracias
Luis Sanabria
Cartago, Costa Rica
Escrito por Luis Sanabria
el 13/07/2007

OK, ubícate en la celda A3.

En la barra de menú escoje Formato - Formato condicional.

Aparece una ventana, selecciona del primer cuadrito de izq a derecha "valor de la celda", en el segundo "menor o igual que" y por último en el tercero escribe el número cero.

Luego, localiza el botón con el nombre de formato y presiónalo en una ocasión.   Ahora accedes a una ventana para el cambio de formato, ahí puedes cambiarle el color al texto por ejemplo.

Una vez que lo tienes listo, presionas el botón Aceptar.

Ahora cambia el valor de A2 por un valor más alto que A1 y observa lo que sucede.

Espero te sirva, saludos.

Jesús Bedoya
Valle del Cauca, Col...
Escrito por Jesús Bedoya
el 13/07/2007
Gracias mil lo hice y funciona, cambia el color, pero la pregunta iva encaminada al parpadeo o cambio de color de la celda, de todos modos asi esta bien, pero si me pueden ayudar con lo del parpadeo seria mejor gracias de nuevo, Jesús.
Luis Sanabria
Cartago, Costa Rica
Escrito por Luis Sanabria
el 14/07/2007
Aquí te va de nuevo

2. Compleja: VBA

Copia el sgte código en un módulo de VBA

Public datHora As Date
Public Const conIntervalo = 1 "un segundo
Public Const conRunMacro = "Tu_Sub" "tu proced.
Public acum As Integer "Acumulador

Sub StartTemporizador()
datHora = Now + TimeSerial(0, 0, conIntervalo)
"iniciar el temporizador
Application. OnTime _
Earliesttime:=datHora, _
Procedure:=conRunMacro, _
Schedule:=True
End Sub

Sub Tu_Sub()
Dim resultado As Integer

    resultado = Range("a3"). Value
    acum = acum + 1
   
    If resultado <= 0 Then
   
        If acum Mod 2 = 0 Then
            Range("A3"). Font. ColorIndex = 3
        Else
            Range("A3"). Font. ColorIndex = 1
        End If
       
        If acum >= 32000 Then
            acum = 0
        End If
    Else
        Range("A3"). Font. ColorIndex = 1
    End If
   
    "reiniciar el temporizador
    StartTemporizador
End Sub

Sub StopTemporizador()
On Error Resume Next
"desactivar el temporizador
Application. OnTime _
Earliesttime:=datHora, _
Procedure:=conRunMacro, _
Schedule:=False
End Sub


Ejecuta el procedimiento Tu_sub para ver cómo parapeda y luego cambia el valor en A2.

Para detenerlo, debes ejecutar Stop_temporizador.

Espero te sirva, saludos.

Jesús Bedoya
Valle del Cauca, Col...
Escrito por Jesús Bedoya
el 15/07/2007
Que pena tener que molestra con esto pero me sale un error lo otro sería que estuviera haciendo las cosas mal me podrían guiar para hacer el vba, anexo el error que aparece, disculpas de nuevo recuerdenque no soy muy ducho en esto gracias por la paciencia

Ficheros adjuntos:
parpadeo