ho fatto qualche prova, ed in effetti la soluzione che si presta meno a problemi, è quella di utilizzare una routine in ogni usercontrol.

in pratica nel tuo usercontrol puoi esporre una collection dei controlli in esso contenuti, si può fare anche senza far ricorso ad una classe, in questo modo:

codice:
Public Controls As Collection
e poi nell'evento Initialize del'UserControl:

codice:
Private Sub UserControl_Initialize()
Set Controls = New Collection
Dim c As Control
For Each c In UserControl
    Controls.Add c
Next c
End Sub
in questo modo anche il tuo UserControl dispone di una Collection Controls che puoi ciclare.

per far vedere il controllo alla routine presente nel modulo esterno potresti passare l'oggetto Extender che in pratica è l'oggetto Usercontrol così come viene istanziato sul form, quindi alla pressione del CommandButton interno all'UserControl potresti scrivere:

codice:
DisAbilitaContenitore fraPannelloCategorie, Extender, False
il problema sta nell'individuare il Container di ogni singolo controllo presente nella collection, che per motivi che dovrei approfondire, non riesce.

giunto a ciò, come ti dicevo, penso che la strada più semplice e priva di intoppi sia proprio quella di predisporre una routine per ogni UserControl.

Boolean