Pregunta para Luis Mondelo

Holo Luis , Como estas?

recuerdas hace algunos días me enviaste esta solución para lo del color de fondo de un userform y del color de los labels de ese mismo userform?

me enviaste esta solución:

Private Sub UserForm_Initialize()
f = Range("color").Interior.Color
t = Range("color").Font.Color
UserForm1.BackColor = f
For Each ctrl In Me.Controls
If TypeName(ctrl) = "Label" Then
ctrl.BackColor = t
End If
Next
End Sub

cuando quise aplicarla a los demás userforms de mi proyecto me da un error que dice que no se han definido las variables.

como puedo hacer que funcione para los otros userform de mi proyecto sin que me salte ese error?

Gracias, un Saludo!

1 respuesta

Respuesta
1

Seguramente es porque tienes una instrucción como esta:

Option explicit

Que obliga a declarar las variables. Mira a ver si la encuentras y si la quitas funcionará

si.. encontré lo de option explicit, lo borré pero de todos modos no funcionó. será que hay alguna otra cosa que hice mal?

solo toma lo del fondo de userform pero no lo del color de los label.

Gracias!

Un saludo.

Acabo de probarlo otra vez y me funcionar perfectamente.

Revisa el código e intentalo y me cuentas

no entiendo que pudo haber pasado. lo probé en otro proyecto y pasa lo mismo. solo toma el fondo del userform del rango color pero no toma el color de los labels.

voy a adjuntar el codigo y miras si fué que algo he cambiado y no me di cuenta.

Sub USERFORM_INITIALIZE()
OptionButton1.value = True
f = Range("color").Interior.Color
t = Range("color").Font.Color
Bodyfat.BackColor = f
For Each ctrl In Me.Controls
If TypeName(ctrl) = "Label" Then
ctrl.BackColor = t
End If
Next
End Sub

aqui está en otro proyecto en un userform llamado Bodyfat

nombré una celda "Color" le di color de fondo y color de fuente

Hola Luis:

hice este cambio y funcionó

f = Range("color").Interior.Color
t = Range("color").Font.Color
CambioKey.BackColor = f
For Each ctrl In Me.Controls
If TypeName(ctrl) = "Label" Then
ctrl.ForeColor = t
End If
Next

cambie "BackColor" por "ForeColor" y funciona bien.

está bien o piensas que tal vez vuelva a fallar?

Gracias.

Que yo sepa el forecolor es para el texto y yo te lo mandé para el relleno del objeto

Si. disculpame, tal vez no me di a entender pero la finalidad era que si el fondo del userform cambiaba, el texto del label (el BackColor lo tengo transparente) en caso de que el fondo del userform fuese oscuro yo pudiera cambiar el color del texto del label para que se viera con claridad.

luego de esto me di cuenta que los botones también necesitarían que esto fuera posible e hice esta adaptación y logré que el texto de los botones también cambiaran según la celda llamada "color"

Private Sub UserForm_Initialize()
f = Range("color").Interior.Color
t = Range("color").Font.Color
UserForm1.BackColor = f
For Each ctrl In Me.Controls
If TypeName(ctrl) = "Label" Then
ctrl.ForeColor = t
End If
Next
For Each ctrl In Me.Controls
If TypeName(ctrl) = "CommandButton" Then
ctrl.ForeColor = t
End If
Next

Como te dije anteriormente, estoy aprendiendo esto de los códigos y macros

Agradezco tu paciencia, colaboración y dedicación para conmigo.

me ha sido de gran ayuda tu colaboración y espero poder seguir contando contigo.

Ok, me alegra saberlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas