Sasha: Creo que lo que te pongo a continuación cumplirá con los requisitos que buscas y en caso de no ser así, puede ser una base modificandolo.
Si dejas "visible" del Check en si, pero lo pones "detrás" de la Etiqueta (Pestaña Organizar >> Enviar al Fondo), parecerá que no tienes ese tipo de control.
Option Compare Database
Option Explicit
'Los Nombes de las Etiquetas, para que éste código funcione han de tener el nombre de EtiChkX
'Los Nombres de los ChekBox han de ser ChkX
'El valor X va del 1 al N y han de ser el mismo en EtiChk y en Chk
Private Sub Form_Load()
'Añado el Evento >> AfterUpdate a todos los CheckBox, para después poder acceder a las propiedades de sus etiquetas asociadas
For Each Ctrl In Me.Controls
If Ctrl.ControlType = acCheckBox And Val(Mid(Ctrl.Name, 4)) > 0 Then
Ctrl.AfterUpdate = "=PintaEtiqueta('" & Ctrl.Name & "')"
End If
Next Ctrl
End Sub
Private Sub Form_Current()
'Pinto de Rojo las etiquetas que tengan el Check en True
Dim NumControl As Integer
Dim EtiquetaAPintar As String
For Each Ctrl In Me.Controls
If Ctrl.ControlType = acCheckBox And Val(Mid(Ctrl.Name, 4)) > 0 Then
'Tomo el valor de la derecha del CheckBox para componer el Nombre de la Etiqueta
NumControl = Val(Mid(Ctrl.Name, 4))
EtiquetaAPintar = "EtiChk" & CStr(NumControl)
If Ctrl.Value = True Then
Me(EtiquetaAPintar).BackColor = RGB(255, 0, 0)
Me(EtiquetaAPintar).ForeColor = RGB(255, 255, 255)
Else
Me(EtiquetaAPintar).BackColor = RGB(255, 255, 255)
Me(EtiquetaAPintar).ForeColor = RGB(0, 0, 0)
End If
End If
Next Ctrl
End Sub
Public Function PintaEtiqueta(StrControl As String)
Dim NumControl As Integer
Dim EtiquetaAPintar As String
On Error GoTo PintaEtiqueta_TratamientoErrores
'Tomo el valor de la derecha del CheckBox para componer el Nombre de la Etiqueta
NumControl = Val(Mid(Me.Controls(StrControl).Name, 4))
EtiquetaAPintar = "EtiChk" & CStr(NumControl)
If Me.Controls(StrControl).Value = True Then
Me(EtiquetaAPintar).BackColor = RGB(255, 0, 0)
Me(EtiquetaAPintar).ForeColor = RGB(255, 255, 255)
Else
Me(EtiquetaAPintar).BackColor = RGB(255, 255, 255)
Me(EtiquetaAPintar).ForeColor = RGB(0, 0, 0)
End If
PintaEtiqueta_Salir:
On Error GoTo 0
Exit Function
PintaEtiqueta_TratamientoErrores:
MsgBox "Error " & Err & " en Funcion.: PintaEtiqueta de Documento VBA: InscripcionesBolsas (" & Err.Description & ")", vbCritical + vbOKOnly, "ATENCION"
Resume PintaEtiqueta_Salir
End Function 'PintaEtiqueta(strControl As String)
Ya me contarás. Saludos >> Jacinto