como tomar el valor de una celda

11 envíos / 0 nuevos
Último envío
Luis Huete
Imagen de Luis Huete
Offline
última acción: Hace 11 años 6 meses
alta: 29/04/2012 - 21:38
Puntos: 105
como tomar el valor de una celda

Necesito saber como tomar el valor de una celda, para que dependiendo del valor este se ejecute la macro.

Ejemplo 

Case Is <= 39.39: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(0, 176, 240)

El valor 39.39 el que digite de forma manual, quiero que sea tomado de una celda (G8), para que este ejecute la orden del cambio del color. 

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: como tomar el valor de una celda

Yo pondría:

 

Range("G8").Value

 

Siempre que la celda sea siempre la G8.

 

Saludos

universoexcel
Imagen de universoexcel
Offline
última acción: Hace 6 años 8 meses
Nivel 1 - 200 puntosNivel 2 - 500 puntos
alta: 25/10/2011 - 19:41
Puntos: 710
Re: como tomar el valor de una celda

Mi opción sería:

 

If cell(8,7).value<=39.39 then

'Tu código para colorear la figura aqui

End if

 

La referencia R1C1 es la de G8, fila 8, columna 7

Luis Huete
Imagen de Luis Huete
Offline
última acción: Hace 11 años 6 meses
alta: 29/04/2012 - 21:38
Puntos: 105
Re: como tomar el valor de una celda

he probado, tu suegerencia, pero no me funciona, 

conlos valores que he puesto de forma manual si me funciona al cambiar el dato.

pongo toda la secuencia:

Option Explicit

Private Sub Worksheet_Change(ByVal target As Range)

Select Case target.Address(0, 0)

Case "N35": Colorear target.Value, 3848
Case "N36": Colorear target.Value, 3844
Case "N37": Colorear target.Value, 3851
Case "N38": Colorear target.Value, 3850
Case "N39": Colorear target.Value, 3843
Case "N40": Colorear target.Value, 3847
Case "N41": Colorear target.Value, 3852
Case "N42": Colorear target.Value, 3845
Case "N43": Colorear target.Value, 3853
Case "N44": Colorear target.Value, 3849
Case "N45": Colorear target.Value, 3842
Case "N46": Colorear target.Value, 3854

End Select

End Sub
Private Sub Colorear(target#, Figura#)

Select Case target

Case Is <= 19.69: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(0, 102, 0)
Case Is <= 39.39: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(0, 176, 240)
Case Is <= 59.09: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(255, 255, 0)
Case Is <= 78.79: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(255, 192, 0)
Case Is >= 78.8: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(255, 0, 0)

End Select

End Sub
 
 este no esta en un modulo sino en la hoja de calculo.

los numeros quiero que hagan referencia a la celda, por que es un valor cambiante,

Luis Huete
Imagen de Luis Huete
Offline
última acción: Hace 11 años 6 meses
alta: 29/04/2012 - 21:38
Puntos: 105
Re: como tomar el valor de una celda

Gracias 

Probe esta opcion, tampoco me funciona, lo que pasa es que la celda G8 contiene un valor que cambia, no siempre es 39.39 (toma un valor de acuerdo a otros parametros), dicho de otra manera tengo un rango de valores que dependiendo de ese valor, la forma que tengo (Mapa) este me cambia de color, hasta donde lo he trabajado me funciona bien es decir si lo pongo el valor de forma manual , por ejemplo si cambio por 50, a 60 etc. funciona perfectamente, pero tendría que hacerlo siempre que el valor de las celdas estan cambian. que es frecuente.

pacomegia
Imagen de pacomegia
Offline
última acción: Hace 7 horas 17 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
Re: como tomar el valor de una celda

Pues entonces no emplees un número, emplea una referencia a tu celda

por ejemplo, si quieres comparar con la celda A1 (fila1 columna 1) puedes hacer como sugiere UniversoExcel

Case Is <= Cells(1, 1).Value: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(0, 102, 0)

 

Así cada vez que compare mirará el valor de esa celda.

(he probado con Range("a1").value, pero se produce un error 16 expresión demasiado compleja)

 

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

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 1 día
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
Re: como tomar el valor de una celda

El problema del error de expresión compleja lo resuelvo asignando el valor a una variable intermedia.

Luego se libera la variable y caso resuelto. Además, en casos repetitivos aligera el trabajo, aunque utilice más memoria.

 

Sería algo así como 

Dim a as Single (o el tipo de variable que convenga)

 

a = Range("G8").Value

Case Is <= a: Shapes.Range("Freeform " & Figura).Fill.ForeColor.RGB = RGB(0, 102, 0)

 

En caso de que apetezca liberar la variable:

 

Set a = Nothing

 

 

El utilizar Range o Cells depende de cómo te organices. Si vas a hacer un bucle con las mismas operaciones variando filas o columnas, cells funciona muy bien. Si la estructura mental de tu algoritmo es de moverte alrededor de la celda activa, que es siempre la misma, range hace el trabajo de maravilla.

 

Saludos

visitante (no verificado)
Imagen de visitante
Re: como tomar el valor de una celda

Gracias, por la sugerencia, si la he probado y funciona muy bien garcias

saludes 

visitante (no verificado)
Imagen de visitante
Re: como tomar el valor de una celda

Gracias, por la aclaración, funciona conCells. 

Saludes 

visitante (no verificado)
Imagen de visitante
Re: como tomar el valor de una celda

Has mirado de hacerlo con Formato condicional ??

hector (no verificado)
Imagen de visitante
celda activa

disculpen como en A2 viera or donde va la celda activa ?