VBA Si color de celda buscar un valor en una celda

Resuelto
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.

3 respuestas

  1. 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
    1. ¡Gracias, lo modificaré y veré si está todo bien, gracias!
    2. 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
    3. El código cambia, pero para poder establecerlo, se necesitan datos precisos.
      Nombre de las hojas, designación de las celdas de comando, designación de las celdas de resultado, etc....
      Incluso se puede adjuntar un archivo lleno.
    4. 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
    5. 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.
  2. 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.
    1. Las celdas iniciales manualmente. Luego, mediante VBA, las otras celdas toman automáticamente el color de las celdas iniciales.
  3. 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.