Vale. Perfecto, Julián. Ya he conseguido hacerlo funcionar. Pero tengo otra duda. Como me tiene que funcionar, no solo al elegir el artículo del desplegable, sino que, cuando pase entre registros (del formulario principal), me muestre/oculte los campos en función de si hay recargas o no, tengo que dividir en dos el código.
Public Function DarFormatoCondicionalALasRecargas(FormatoCondicionalCodigoRecarga As Boolean, Optional FName As Form, Optional SubForm As Boolean)
On Error Resume Next 'Pongo esto para que no me de error si quiero entrar en el subformulario
Dim ColorFondoRed As Double, ColorFondoGreen As Double, ColorFondoBlue As Double
ColorFondoRed = DLookup("[ColorFondoRed]", "[T00Configuracion]")
ColorFondoGreen = DLookup("[ColorFondoGreen]", "[T00Configuracion]")
ColorFondoBlue = DLookup("[ColorFondoBlue]", "[T00Configuracion]")
If FormatoCondicionalCodigoRecarga = False Then
If SubForm = True Then
FName.TxtCodigoRecarga.Visible = False
FName.TxtCodigoRecarga.TabStop = False
FName.TxtCodigoRecarga.BackColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
FName.TxtCodigoRecarga.ForeColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
FName.TxtTelefonoMovil.Visible = False
FName.TxtTelefonoMovil.TabStop = False
FName.TxtTelefonoMovil.BackColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
FName.TxtTelefonoMovil.ForeColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
Else
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.Visible = False
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.TabStop = False
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.BackColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.ForeColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.Visible = False
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.TabStop = False
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.BackColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.ForeColor = RGB(ColorFondoRed, ColorFondoGreen, ColorFondoBlue)
End If
Else 'Activar las recargas
If SubForm = True Then
FName.TxtCodigoRecarga.Visible = True
FName.TxtCodigoRecarga.TabStop = True
FName.TxtCodigoRecarga.BackColor = RGB(255, 255, 255)
FName.TxtCodigoRecarga.ForeColor = RGB(255, 255, 255)
FName.TxtTelefonoMovil.Visible = True
FName.TxtTelefonoMovil.TabStop = True
FName.TxtTelefonoMovil.BackColor = RGB(255, 255, 255)
FName.TxtTelefonoMovil.ForeColor = RGB(255, 255, 255)
Else
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.Visible = True
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.TabStop = True
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.BackColor = RGB(255, 255, 255)
Forms![F10TPV]![TPVSubformulario].Form!TxtCodigoRecarga.ForeColor = RGB(64, 64, 64)
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.Visible = True
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.TabStop = True
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.BackColor = RGB(255, 255, 255)
Forms![F10TPV]![TPVSubformulario].Form!TxtTelefonoMovil.ForeColor = RGB(64, 64, 64)
End If
End If
End Function
Como puedes ver, es una función que tengo en un módulo, para no tener todo ese código dos veces. Le paso una variable boolean para indicarle si es subformulario o no. Si es subformulario, directamente es Me.Campo; pero si no es subformulario, tiene que ser Forms![F10TPV]![TPVSubformulario].Form!Campo.
¿Hay alguna manera de simplificar eso?
¡Muchas gracias!