VBA Si color de celda buscar un valor en una celda
Resuelto
jambontomate
Mensajes publicados
44
Estado
Miembro
-
jambontomate Mensajes publicados 44 Estado Miembro -
jambontomate Mensajes publicados 44 Estado Miembro -
Hola a todos,
Tengo celdas con colores (por ejemplo: B2:B10 son amarillas). La idea es:
Si B2=amarillo, B3 = "valor de la celda F19 de la hoja XXXX".
¿Cómo escribirlo en VBA, gracias, o fórmula si no es necesario VBA (aún mejor)?
Muchas gracias.
Tengo celdas con colores (por ejemplo: B2:B10 son amarillas). La idea es:
Si B2=amarillo, B3 = "valor de la celda F19 de la hoja XXXX".
¿Cómo escribirlo en VBA, gracias, o fórmula si no es necesario VBA (aún mejor)?
Muchas gracias.
Enlaces relacionados:
- EXCEL copiar valor de combobox en una celda
- Valor predeterminado en una celda al añadir una fila
- verificar si un valor está en un rango
- Valor de un textbox en una celda con formato de número decimal
- Añadir una palabra si el valor está presente en una lista
- Limitar el valor de una celda entre un valor alto y un valor bajo
3 respuestas
-
Hola,
Sub privado Hoja_CambioSeleccion(ByVal Objetivo Como Rango)
Si Rango("B2").Interior.ColorIndex = 6 Entonces
Rango("B3") = Hojas("Hoja2").Rango("F19")
Fin Si
Fin Sub
Atentamente-
-
Un comentario: Si esta idea se aplica a un rango de celdas, por ejemplo: rango de celdas B2:B20 si B2:B10 = amarillo entonces C2:C10 = "valor de la hoja "xxx" de la celda "Y" si B10:B20 = rojo entonces C10:C20 = "valor de la hoja "xxx" de la celda "Y".
¿La fórmula VBA cambia radicalmente o solo es poner rango(B2:B20)...? Gracias -
-
De lo contrario, puedes ver con este código para los valores de retorno en Hoja2 F19 y F20
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For i = 2 To 10
If Range("B" & i).Interior.ColorIndex = 6 Then
Range("C" & i) = Sheets("Hoja2").Range("F19")
ElseIf Range("B" & i).Interior.ColorIndex <> 6 Then
Range("C" & i) = ""
End If
Next i
For j = 11 To 20
If Range("B" & j).Interior.ColorIndex = 3 Then
Range("C" & j) = Sheets("Hoja2").Range("F20")
ElseIf Range("B" & j).Interior.ColorIndex <> 3 Then
Range("C" & j) = ""
End If
Next j
End Sub -
Esta noche adjuntaré un archivo porque aquí la seguridad del trabajo bloquea. De hecho, va a ser más complicado para la macro.
Voy a tener una columna B2:B100 con cuatro colores fijos (azul, amarillo, naranja, rojo) que pueden cambiar en las celdas de esta columna a menudo.
Me gustaría, si es posible, que la macro busque para las celdas C2:C100, a cada cambio de color, un valor diferente (en este caso: cuatro valores diferentes = cuatro colores diferentes)
Ej: para el color amarillo el valor de la celda B19 de la hoja 1, para el color azul el valor de la celda B19 de la hoja 2, etc.
La dificultad de esta macro es que las celdas de colores pueden cambiar de rango, un día B2:B10 amarillo y al día siguiente B4:15 azul, etc.
¿Es posible ya? Si es posible, les enviaré un archivo esta noche con un ejemplo si no está claro.
-
-
Hola,
¿Cómo están coloreadas tus celdas, manualmente o con formato condicional?
Si es formato condicional, ¿cuál es la forma de tu formato?
--
A+
Mike-31
Un período de fracaso es un momento ideal para sembrar las semillas del conocimiento. -
Una observación: Si esta idea se aplica a un rango de celdas, ej: rango de celdas B2:B20, si B2:B10 = amarillo entonces C2:C10 = "valor de la hoja "xxx" de la celda "Y"; si B10:B20 = rojo entonces C10:C20 = "valor de la hoja "xxx" de la celda "Y".
¿La fórmula VBA cambia radicalmente o solo hay que poner range(B2:B20)...? Gracias.