Saltar al contenido

Cambiar color de fondo automaticamente de un cuadro de texto normal (no es control de formulario) al color que tenga de fondo una celda


Recommended Posts

publicado

Buenas,

necesito ayuda, no soy capaz de que el color de un cuadro de texto normal, no el que se añade desde la pestaña programador, sea igual al color de una celda que se encuentra en otra hoja, y este cambie automaticamente el color de la celda.

una ayudita porfa

muchas gracias!

publicado

Te adjunto un ejemplo

La celda A1 de la hoja2 tiene color de fondo, mismo que va tomar el textbox de la hoja1, cuando la hoja sea la activa

Y si seleccionas el textbox, también va tener el mismo efecto, y si seleccionas una celda, se va quitar dicho color

 

Saludos 

 

Textbox en hoja_GP.xlsm

publicado

Muchas gracias por la respuesta pero no es exactamente lo que necesito, en primer lugar yo no tengo un textbox, yo tengo un cuadro de texto que se añade desde la pestaña insertar>texto>cuadro de texto, y busco que dicho cuadro de texto cambie de color automaticamente al color de una celda que esta en otra hoja, sea o no la hoja activa. Les adjunto unas fotos.

Quiero que en los Cuadros de Texto de la primera imagen aparezcan del mismo color que las celdas de color de la segunda imagen y que cuando yo cambie el color de la celda de la segunda imagen el color del cuadro de texto cambie también de forma automática sin ser necesario que sea la hoja principal.

espero haberme explicado bien, a ver si podéis ayudarme

ayuda1.JPG

ayuda2.JPG

publicado

De forma automática, no va a poder ser, pero si a través de una macro que tendrías que ejecutar de forma manual. (Botón, short key o escogiéndola de la lista de macros (Alt+F8),etc...)

Pero es necesario el archivo Excel, con solo las imágenes, no hacemos nada.

publicado

Activa cualquier hoja objetivo y ejecuta esta macro.

Se supone que el color se asigna a través de formato condicional.

Sub ActualizarColor()
Application.ScreenUpdating = False
For Each motor In ActiveSheet.Shapes
    motor.Select
    If Selection.Formula <> "" Then
       fórmula = Replace(Selection.Formula, "'", "")
       i = InStr(fórmula, "!")
       hoja = Left(fórmula, i - 1)
       rango = Trim(Mid(fórmula, i + 1))
       Set celda = Sheets(hoja).Range(rango).Offset(3)
       Selection.ShapeRange.Fill.ForeColor.RGB = celda.DisplayFormat.Interior.Color
     End If
Next
ActiveCell.Select
End Sub

 

publicado

Un poco mas ortodoxo.

Sub ActualizarColor()
Application.ScreenUpdating = False
For Each motor In ActiveSheet.Shapes
    motor.Select
    If Selection.Formula <> "" Then
       Selection.ShapeRange.Fill.ForeColor.RGB = _
       Range(Selection.Formula).Offset(3).DisplayFormat.Interior.Color
     End If
Next
ActiveCell.Select
End Sub

 

publicado

Perfecto, muchísimas gracias, funciona a la perfección. Si no es mucho pedir, le agradecería que me explicara el código para aprender mejor. 

Saludos 

Jonatan

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.