considerato che era meglio che non ti chiedevo spiegazioni:
codice:
Succede questo: se ad esempio nella 3a etichetta non è presente la 
qualifica (= ""), il codice che ho scritto io assegna False alla 
proprietà Suppress della Qualifica.
al massimo è il contrario.


il problema si genera perchè ovviamente le etichette vengono prima elaborate e poi mandate in stampa, ovviamente se non identifichi una singolarità per ogni etichetta succede che ad es:

TitoloPostale.suppres = true
sarà valido sia per l'etichetta 1 che per quella 100 in quanto l'oggetto "titolopostale" non è unico per ogni etichetta.

prova così:
codice:
Private Sub Etichetta_Format(ByVal pFormattingInfo As Object)
    PosizionaControlli
End Sub

Sub PosizionaControlli()
    set  CrystalReport1.Status = 3
    Dim sngTop As Single
    Dim altezza As Integer
        
    sngTop = TitoloPostale.Top
        
    If TitoloPostale.Value = "" Then
        TitoloPostale.Suppress = True
    Else
        TitoloPostale.Suppress = False
        altezza = fnAltezzaH(TitoloPostale.Value)
        sngTop = sngTop + (altezza * TitoloPostale.Height)
    End If

    If Nominativo.Value = "" Then
        Nominativo.Suppress = True
    Else
        Nominativo.Suppress = False
        Nominativo.Top = sngTop
        altezza = fnAltezzaH(Nominativo.Value)
        sngTop = sngTop + (altezza * Nominativo.Height)
    End If
        
    If Qualifica.Value = "" Then
        Qualifica.Suppress = True
    Else
        Qualifica.Top = sngTop
        altezza = fnAltezzaH(Qualifica.Value)
        sngTop = sngTop + (altezza * Qualifica.Height)
    End If
           
    If Indirizzo.Value = "" Then
        Indirizzo.Suppress = True
    Else
        Indirizzo.Suppress = False
        Indirizzo.Top = sngTop
    End If
     set  CrystalReport1.Status = -1
End Sub
lo status indica l'apertura(3) e la chiusura (-1) del report così dovresti creare report separati, non so' pero' se funziona in una function