Foros del Web » Soporte técnico » Ofimática »

semaforo en excel

Estas en el tema de semaforo en excel en el foro de Ofimática en Foros del Web. Quería hacer una especie de semáforo en excel, de forma que según el resultado de una celda aparezca el color rojo, naranja o verde. He ...
  #1 (permalink)  
Antiguo 16/03/2006, 02:43
Avatar de niconico  
Fecha de Ingreso: enero-2006
Mensajes: 166
Antigüedad: 18 años, 4 meses
Puntos: 0
semaforo en excel

Quería hacer una especie de semáforo en excel, de forma que según el resultado de una celda aparezca el color rojo, naranja o verde. He probado con formato/formato condicional y bueno puede valir. Pero estuve pensando en lo siguiente: tengo un semáforo muy chulo dibujado entonces cuando sea el resultado de la celda sea, por ejemplo inferior a 100 pues se pondría en rojo, si esta entre 500 y 1000 naranja y más de 1000 verde. Para esto tengo dos ideas una hacer tres semáforos:uno con la luz roja, otro naranja y otro verde, de forma que según el resultado excel cargue la imagen del resultado correspondiente, y la otra idea es tener el semáforo sin luces y que según el resultado excel cargue la imagen de un circullito rojo, naranja o verde. Problemas: como le digo a excel que muestre en un determinado sitio de la hoja una imagen dependiendo de un resultado de una celda?
Para llamar a la imagen utilizo este código pero no va:

Sub imagen()
Dim Ruta As String
Ruta = ThisWorkbook.Path & "c:\Documents and Settings\pep\Escritorio\semaforo.gif"
Application.Help Ruta
End Sub

Muchas gracias por la ayuda
  #2 (permalink)  
Antiguo 16/03/2006, 04:11
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
yo hago algo similar a lo tuyo, pero con gráficos.
Es más sencillo hacer esto:
1- Copiate los tres semáforos con las luces distintas en la hoja donde quieras que se vean.
2- Después vete seleccionando cada uno de las imagenes y fíjate en la parte izquierda de la barra de fórmula cómo las denomina.
3- Con una macro vas a hacer que sea visible la imagen que necesites en cada momento y haces que las otras sean invisibles. El código es:
ActiveSheet.Shapes("Object 54").Visible = False para hacer el objeto 54 invisible.
ActiveSheet.Shapes("Object 54").Visible = true para hacerlo visible.

Espero que te sea útil.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #3 (permalink)  
Antiguo 16/03/2006, 04:47
Avatar de niconico  
Fecha de Ingreso: enero-2006
Mensajes: 166
Antigüedad: 18 años, 4 meses
Puntos: 0
Muchas gracias, ahora puedo ocultar los tres semáforos en la hoja, pero como no tengo macro como vinculo el resultado de una celda a que aparezca o no una imagen?, sería algo así como asignar una macro a una celda pero eso no se puede hacer, no sé.
  #4 (permalink)  
Antiguo 16/03/2006, 05:06
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Si se puede hacer.
Abre la barra de herramientas de VBA y da le Editor de Visual Basic.
Haz doble clic sobre la hoja donde estén tus imagenes.
copia este código:
Dim Direccion As String
Dim Cambiar As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
If Cambiar and Direccion=$A$1 Then
Valor = range("A1").value
if Valor <100 then
ActiveSheet.Shapes("Object 54").Visible = True
ActiveSheet.Shapes("Object 57").Visible = False
ActiveSheet.Shapes("Object 56").Visible = False
elseif Valor >=100 and Valor<200 then
ActiveSheet.Shapes("Object 54").Visible = False
ActiveSheet.Shapes("Object 57").Visible = True
ActiveSheet.Shapes("Object 56").Visible = False
else
ActiveSheet.Shapes("Object 54").Visible = False
ActiveSheet.Shapes("Object 57").Visible = False
ActiveSheet.Shapes("Object 56").Visible = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Direccion = ActiveCell.Address
Cambiar = True
End Sub

He supuesto que la celda que tiene los valores que marcan las pautas del semáforo están en A1 y son <100, entre 100 y 200 y >200. Los objetos 54, 57 y 56 son tus imagenes.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #5 (permalink)  
Antiguo 16/03/2006, 05:24
Avatar de niconico  
Fecha de Ingreso: enero-2006
Mensajes: 166
Antigüedad: 18 años, 4 meses
Puntos: 0
Muchas gracias, es lo que necesitaba. Tuve que quitar una línea del código porque con ella me daba error:

If Cambiar and Direccion=$A$1 Then

y después le añadí unas líneas para que cuando no haya nada en la celda no aparezca ninguna imagen, así quedo (no sé si estará bien pero funciona):

Dim Direccion As String
Dim Cambiar As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)

Valor = Range("A1").Value
If Valor = 0 Then
ActiveSheet.Shapes("Imagen 14").Visible = False
ActiveSheet.Shapes("Imagen 12").Visible = False
ActiveSheet.Shapes("Imagen 13").Visible = False

ElseIf Valor >= 1 And Valor < 100 Then
ActiveSheet.Shapes("Imagen 14").Visible = True
ActiveSheet.Shapes("Imagen 12").Visible = False
ActiveSheet.Shapes("Imagen 13").Visible = False
ElseIf Valor >= 100 And Valor < 200 Then
ActiveSheet.Shapes("Imagen 14").Visible = False
ActiveSheet.Shapes("Imagen 12").Visible = True
ActiveSheet.Shapes("Imagen 13").Visible = False
Else
ActiveSheet.Shapes("Imagen 14").Visible = False
ActiveSheet.Shapes("Imagen 12").Visible = False
ActiveSheet.Shapes("Imagen 13").Visible = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Direccion = ActiveCell.Address
Cambiar = True
End Sub
  #6 (permalink)  
Antiguo 16/03/2006, 06:06
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
el error que te dará es porque los tipos del if no coinciden.
Si quieres puedes quitarle lo de "Cambiar And" en lugar de toda la línea que te has cargado y debería funcionar igual de bien.
El problema que tiene lo que quieres hacer, aunque funciona, es que cuando hagas algún cambio en cualquier sitio de la hoja también se ejecuta todo el código, lo que lo hace ir más lento. Con mi sugerencia evito que se ejecute el código a no ser que el cambio se de en la celda apropiada (A1).

Si quieres dejarlo así quitale:
Dim Direccion As String
Dim Cambiar As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Direccion = ActiveCell.Address
Cambiar = True
End Sub
Porque todo esto no te vale entonces para nada.
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:
  #7 (permalink)  
Antiguo 16/03/2006, 09:05
Avatar de niconico  
Fecha de Ingreso: enero-2006
Mensajes: 166
Antigüedad: 18 años, 4 meses
Puntos: 0
ok muchas gracias
  #8 (permalink)  
Antiguo 16/03/2006, 16:39
Avatar de Ephs  
Fecha de Ingreso: marzo-2006
Ubicación: Bueno, Vivo en la ciudad de Panamá, en un area muy bonita llamada San. Francisco
Mensajes: 171
Antigüedad: 18 años, 2 meses
Puntos: 1
Este mismo semaforo se puede hacer con autoformas????????
y/o hay manera de no usar macros, ya que donde trabajo la seguridad es maxima
---

Última edición por Ephs; 16/03/2006 a las 17:08
  #9 (permalink)  
Antiguo 17/03/2006, 02:14
 
Fecha de Ingreso: noviembre-2005
Mensajes: 170
Antigüedad: 18 años, 5 meses
Puntos: 1
Con las autoformas también debería funcionar. No lo he probado personalmente, pero sabiendo su nombre se puede ocultar.
Para saber el nombre ya sabes como hacerlo. Graba una macro seleccionando la/s autoforma/s que utilizas.
Lo de no utilizar macros lo veo un poco difícil, ya que excel por si solo es un programa administrativo y VBA es el que le da ese dinamismo. No te voy a decir que no se pueda porque no soy tan experto, pero yo no sé hacerlo. En mi curro también me pasaba lo mismo y a la gente que le dejo el programa les digo que bajen la seguridad a media para que cuando lo abran les presgunte si quieren o no habilitar las macros. Incluso a gente que lo utiliza más frecuentemente les he bajado la seguridad al mínimo.
Un saludo
__________________
El sabio no dice nunca todo lo que piensa,
pero siempre piensa todo lo que dice.
Aristóteles :pensando:

Última edición por potypoty; 17/03/2006 a las 04:20
  #10 (permalink)  
Antiguo 20/11/2008, 16:40
 
Fecha de Ingreso: julio-2007
Ubicación: México
Mensajes: 2
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: semaforo en excel

Para Microsoft Excel 2007 se realiza de los siguientes pasos:

1.- Se ubica uno en la celda a colocar el semáforo
2.- Ir a la opción INICIO y ubicar la etiqueta ESTILOS
3.- Seleccionar el ícono FORMATO CONDICIONAL (dentro de ESTILOS) y desplegará un submenú de opciones
4.- Puedes seleccionar CONJUNTO DE ÍCONOS y la opción MÁS REGLAS
5.- Configurar el estilo de semáforo que deseen adecuando los párametros que Excel les está proporcionando.

Saludos
  #11 (permalink)  
Antiguo 11/11/2009, 09:52
 
Fecha de Ingreso: noviembre-2009
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: semaforo en excel

Hola a todos!!

Con respecto a este tema soy nuevo, pero ahora en el rabajo requiero hacer macros, es decir necesito que mis semaforo cuando no tenga dato la celda esta invisble, pero cuando tenga dato cumpla los suguientes parametros, si esta mayor o igual a 5 se ponga rosa, si es mayor o igual a 6 y menor de 10 este invisible, tengo otros parametros mas, pero quiero irle entiendo poco a poco
  #12 (permalink)  
Antiguo 11/11/2009, 10:13
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Respuesta: semaforo en excel

Cerrado, no se permite revivir temas viejos.

Lee Las Políticas de Foros del Web.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 5 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 11:47.