Planteo una función, con bastantes bloques if, recorre dos colecciones y carga datos a la bd y a otra colección; no se, al ejecutar el programa y llamarla se cuelga visual, pero no me doy cuenta porq? No tira error, les pongo el cod. de la función, no sé si servirá de algo pero por lo menos quizas alguna idea de que puede ser,  

, MUCHAS GRACIAS...
[/CODE]
Public Function RECIBOSXCATEGORIA(idcat As Integer, numeroinicial As Long, dia As Integer, mes As Integer, año As Integer) As Collection
Dim COLFAMILIAR As Collection
Dim COLTITULAR As Collection
Set COLFAMILIAR = clpAfiliado2.CargarTodos
Set COLTITULAR = clpAfiliado1.CargarTodos
Dim i, j, X As Long
For i = 1 To COLFAMILIAR.Count
    For j = 1 To COLTITULAR.Count
    If idcat = COLTITULAR.Item(j).IdCategoria And idcat = COLFAMILIAR.Item(i).IdCategoria Then
        X = 0
        If COLFAMILIAR.Item(i).ID = COLTITULAR.Item(j).ID Then
        Set clreciboCat1 = New cReciboCat1
            X = 1
            If X = 1 Then
                X = 2
                clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre
                End If
            ElseIf X = 2 Then
                X = 3
                clreciboCat1.NombreFamiliar2 = COLFAMILIAR.Item(i).nombre
                End If
            ElseIf X = 3 Then
                X = 4
                clreciboCat1.NombreFamiliar3 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 4 Then
                X = 5
                clreciboCat1.NombreFamiliar4 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 5 Then
                X = 6
                clreciboCat1.NombreFamiliar5 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 6 Then
                X = 7
                clreciboCat1.NombreFamiliar6 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 7 Then
                X = 8
                clreciboCat1.NombreFamiliar7 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 8 Then
                X = 9
                clreciboCat1.NombreFamiliar8 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 9 Then
                X = 10
                clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 10 Then
                X = 11
                clreciboCat1.NombreFamiliar10 = COLFAMILIAR.Item(i).nombre
                End If
            If X = 11 Then
                X = 11
                clreciboCat1.NombreFamiliar11 = COLFAMILIAR.Item(i).nombre
        Set CLCAT = CLDCAT.Cargarxid(COLFAMILIAR.Item(i).IdCategoria)
        clreciboCat1.ID = CLDCAT.NuevoID
        clreciboCat1.numeroinicial = numeroinicial
        clreciboCat1.Numero = cldrecibocat.Nuevonumero
        clreciboCat1.nombre = COLTITULAR.Item(j).nombre
        clreciboCat1.Valor = CLCAT.Valor
        clreciboCat1.Iva = CLCAT.Iva
        clreciboCat1.Total = CLCAT.Iva + CLCAT.Valor
        clreciboCat1.Categoria = CLCAT.nombre
        clreciboCat1.Direccion = COLTITULAR.Item(j).Direccion
        clreciboCat1.Telefono = COLTITULAR.Item(j).Telefono
        clreciboCat1.mes = mes
        clreciboCat1.año = año
        clreciboCat1.dia = dia
        clreciboCat1.IdCategoria = CLCAT.ID
        RECIBOSXCATEGORIA.Add clreciboCat1
        cldrecibocat.Alta (clreciboCat1)
        End If
        Set clrecibocat = Nothing
     Next
Next
End Function
[CODE]