Declan_K ha ragione nel dire che a) si sta facendo bene, e b) la finestra dei locali ignora l'ambito e li mostra comunque.
Per aggiungere un po 'per il motivo per cui è bene separare fuori e avere una proprietà pubblica e ed un campo privato Utente:
1) Si possono avere utili 'logica' limitata nel Get/Set/Lasciare. Forse desideri memorizzare il valore in un formato diverso ma presentarlo sempre in un altro (ad es. Memorizzarlo come un numero lungo di millisecondi ma tornare sempre in Doppio secondo), o forse vuoi convalidare i dati prima di memorizzarlo.
2) Si definisce una "interfaccia" pubblica che rappresenta un contratto tra la classe e le classi che consumano. Pertanto, fai una chiara distinzione tra i componenti interni della tua classe, che sono liberi di cambiare come meglio credi, e l'interfaccia esterna. Questo potrebbe non essere un problema nella pratica in VBA, poiché è probabile che tu abbia completamente il controllo di tutte le classi che consumano e VBA compila su richiesta, quindi non è un problema cambiare i campi alle proprietà e viceversa, ma è una buona pratica e dovrebbe contribuire a rafforzare l'incapsulamento. Ti aiuterà anche a ricordare quando hai bisogno di essere dannatamente sicuro che non stai facendo un cambiamento in altre parti del tuo Addin/programma!
3) Le proprietà in genere non occupano spazio di archiviazione aggiuntivo per la variabile. I requisiti di archiviazione nel caso di avere un campo pubblico e una proprietà con un campo di backing privato sono fondamentalmente gli stessi. Se ti aiuta, pensala come una 'funzione' che restituisce il valore privato o un 'sub' che imposta il valore privato.
4) In alcuni casi è possibile risparmiare risorse: considerare una classe con proprietà che restituiscono oggetti (come una raccolta "Risultati" o qualcosa del genere). È possibile mantenere i campi di supporto come Nothing fino a quando l'oggetto è effettivamente necessario, sia attraverso un metodo della classe o attraverso un consumatore che lo richiede tramite una proprietà. Quando viene richiesto, è possibile creare un'istanza dell'oggetto, se necessario.
5) ambito separato per il Setter e Accessor: I campi sono privati o sono pubblici e quindi, se è pubblico non è possibile impedire, ad esempio, un campo di essere fatto per fare riferimento a un nuovo oggetto che può o non può essere incoerente con lo stato che la tua classe si aspetta D'altra parte, è possibile limitare una proprietà in modo che sia di sola lettura ecc. Si noti che ciò non impedirà a un oggetto di sola lettura di modificarne le proprietà, ma impedisce solo che il riferimento cambi. Ancora una volta, come al punto 2, questo potrebbe non essere affatto un problema per te in quanto è all'interno del tuo progetto e solo VBA, dopotutto, ma dovrebbe aiutare a garantire che le proprietà (nel senso più ampio) della tua classe siano parte integrante le caratteristiche della tua classe sono controllate dalla tua classe.
6) Ci sono molti altri motivi in altre lingue, ma VBA lo fa, è vero, ne ha di meno.
D'altra parte, è un dolore scrivere così tanto testo per qualcosa che potresti trovare utile o meno!
+1 buona domanda e qualcosa di cui sono stato curioso anch'io. Tutti gli esempi che ho trovato (e quelli che ho implementato) rispecchiano il tuo codice. Sospetto che questa sia la natura delle cose ed è corretta, ma è un po 'confusa nella finestra dei locali. –