El siguiente ejemplo muestra como colorear un formulario continuo que se muestra a través de un subformulario en otro formulario. El código es relativamente sencillo y funciona perfectamente.

Descargar: Access 2000

Fuente: Vimipas

El siguiente código hay que incluirlo en un módulo, y a él se hará referencia desde el subformulario:


'Declaración de las variables utilizadas
Public ELFORMULARIO_s As String
Dim GCONTADOR_s As Long

'Función que numera los registros
Function frmContador_s(frm As SubForm) As Long
On Error GoTo frmContador_s_err
With frm.RecordsetClone
.Bookmark = frm.Bookmark
frmContador_s = 1 + .AbsolutePosition
End With
Exit Function
frmContador_s_err:
If Err = 3021 Then 'no hay registro activo
GCONTADOR_s = 0
End If
End Function

'Dependiendo de la operación realizada con el numerador del registro se le aplica un formato u otro
Public Function CALCULO_s(FREG_s As Control)
FREG_s.FormatConditions.Delete
FREG_s.BackColor = vbMagenta
FREG_s.FormatConditions.Add acExpression, , "(frmContador(" & ELFORMULARIO_s & ") Mod 2)=0"
FREG_s.FormatConditions(0).BackColor = vbCyan
End Function

Para utilizar el código se realizan las siguientes llamadas desde el subformulario:


'Desde el cuadro de texto que se sitúa al fondo y el cual se 'colorea'
Private Sub FONDOREGISTRO_Enter()
Me.IdMun.SetFocus
End Sub

'Al abrir el subformulario
Private Sub Form_Open(Cancel As Integer)
ELFORMULARIO_s = "FORMS!Formulario1!EJEMPLO.Form"
End Sub

Y en el evento al cargar hay que añadirle la función: =CALCULO_S([FONDOREGISTRO])

Leave a Reply