Propongo una ulteriore semplificazione e correggo qualche anomalia come la definizione di UserForm che in access non c'è e la dichiarazione della Variabile [Tipo] già passata come parametro:
Public Function SetPermission(tipo As String)
On Error GoTo Err_elenco
Dim uf As Access.Form
Set uf = CodeContextObject
Select Case tipo
Case Is = "utente"
With uf
.AllowDeletions = False
.AllowAdditions = False
.AllowEdits = False
.ShortcutMenu = False
End With
End Select
Exit_elenco:
Exit Sub
End Sub
Solitamente non si ha una Stringa per definire il LIVELLO UTENTE ma un Indice di persmissivo dove ZERO=SOLA LETTURA ed a salire i livelli più penetranti, quindi io non userei [TIPO AS STRINGA] come definizione di PERMISSIVO.
Detto questo, come suggeriva Migliorabile, sarebbe meglio ragionare con una gestione di "Variabili Ambiente" da popolare al LOGIN, prima azione da fare all'avvio, che carica tutta una serie di impostazioni personali tra cui i vari Permissivi.
Se la gestione Utenti fosse più articolata serve una struttura di Tabelle per definire il tutto.
Ragionando quindi in ottica più strutturata, non è necessario che la maschera passi un parametro alla Funzione, in quanto la definizione delle variabili AMBIENTE, consentirebbe alla funzione di recuperare il LIVELLO da quelle definite come GLOBAL e la funzione sarebbe così:
[code]Public Function SetPermission()
On Error GoTo Err_elenco
Dim uf As Access.Form
Set uf = CodeContextObject
Select Case LevelPermission
Case 0
uf.AllowDeletions = False
uf.AllowAdditions = False
uf.AllowEdits = False
uf.ShortcutMenu = False
Case 1
uf.AllowDeletions = False
uf.AllowAdditions = False
uf.AllowEdits = True
uf.ShortcutMenu = False
Case ...
End Select
Exit_elenco:
Exit Sub
End Sub
In questo caso basta mettere nell'Evento LOAD senza attivare EVENT PROCEDURE:
=SetPermission()
Questo, nel caso la Form non abbia codice aggiuntivi evita sia attivata la proprietà HasModule inutilmente.
Io feci qualche tempo fa un DEMO che puoi trovare pubblicato quì:
http://www.accessgroup.it/general/log-di-eventi.htm
Si tratta di una cosa un poco più articolata e complessa, ma magari rende l'idea di come si può gestire a livello di Client la definizione delle personalizzazioni... in questo caso è un EVENT TRACER dedicato per il DEBUG dei Client, ma la filosofia è applicabile alla gestione Utenti e varie Customizzazioni.