La respuesta que le dan es totalmente inadecuada e indica la falta de conocimiento de VBA de quien lo hace y menos hablar de "consumo de recursos" y "estética", personalmente opino que no lo puede hacer con los subformularios y menos utilizando formato condicional. Por si de pronto lo interesa lo hago con cuadros de lista, Observe la imagen.
Al hacer doble clic sobre el idcodigo 2 del cuadro de lista 1 se resaltan los idcodigo de los cuadros de lista 2 y 3. Ahora, limpio y hago doble clic sobre el idcodigo 3 del cuadro de lista 3 y obtengo
Ahora limpio y hago doble clic sobre el idcodigo1 del cuadro de lista 2 y obtengo
Utilizo el siguiente procedimiento para deseleccionar los items de los 3 cuadros de lista.
Sub deselecciona()
Dim varPos As Variant
For Each varPos In lst01.ItemsSelected
Me.lst01.Selected(varPos) = False
Next varPos
For Each varPos In lst02.ItemsSelected
Me.lst02.Selected(varPos) = False
Next varPos
For Each varPos In lst03.ItemsSelected
Me.lst03.Selected(varPos) = False
Next varPos
End Sub
Llamo el procedimiento en evento Al entrar en cada cuadro de lista y al hacer clic en el botón Limpiar.
Call deselecciona
CÓDIGO DEL EVENTO Al hacer doble clic sobre una fila del cuadro de lista 1
Private Sub lst01_DblClick(Cancel As Integer)
Dim intNumAct As Integer
Dim intCodigo As Integer
intCodigo = Me.lst01.Column(1)
For intNumAct = 1 To Me.lst02.ListCount - 1
If Me.lst02.Column(1, intNumAct) = intCodigo Then
Me.lst02.Selected(intNumAct) = True
End If
Next intNumAct
For intNumAct = 1 To Me.lst03.ListCount - 1
If Me.lst03.Column(1, intNumAct) = intCodigo Then
Me.lst03.Selected(intNumAct) = True
End If
Next intNumAct
End Sub
CÓDIGO DEL EVENTO Al hacer doble clic sobre una fila del cuadro de lista 2
Private Sub lst02_DblClick(Cancel As Integer)
Dim intNumAct As Integer
Dim intCodigo As Integer
intCodigo = Me.lst02.Column(1)
For intNumAct = 1 To Me.lst01.ListCount - 1
If Me.lst01.Column(1, intNumAct) = intCodigo Then
Me.lst01.Selected(intNumAct) = True
End If
Next intNumAct
For intNumAct = 1 To Me.lst03.ListCount - 1
If Me.lst03.Column(1, intNumAct) = intCodigo Then
Me.lst03.Selected(intNumAct) = True
End If
Next intNumAct
End Sub
CÓDIGO DEL EVENTO Al hacer doble clic sobre una fila del cuadro de lista 3
Private Sub lst03_DblClick(Cancel As Integer)
Dim intNumAct As Integer
Dim intCodigo As Integer
intCodigo = Me.lst03.Column(1)
For intNumAct = 1 To Me.lst01.ListCount - 1
If Me.lst01.Column(1, intNumAct) = intCodigo Then
Me.lst01.Selected(intNumAct) = True
End If
Next intNumAct
For intNumAct = 1 To Me.lst02.ListCount - 1
If Me.lst02.Column(1, intNumAct) = intCodigo Then
Me.lst02.Selected(intNumAct) = True
End If
Next intNumAct
End Sub
Observe que el código es muy parecido en los 3 cuadros de lista, lo cual indica que se pueden hacer unas mejoras para reducirlo. Esta una idea seguro que deben existir otras.