PopAds.net - The Best Popunder Adnetwork

Creare gli oggetti VBA

    VBA mette a disposizione dell'utente una serie di classi di oggetti che permettono varie personalizzazioni con l'inserimento di automatismi, nuove funzioni, interfacce grafiche ecc… Tutte le classi sono presenti nelle librerie di office e visibili nel visualizzatore oggetti, consultabile dal men¨ "Visualizza" della console VBA.
    Inoltre VBA permette all'utente di definire delle nuove classi di oggetti e di crearle appositamente secondo le proprie esigenze. Tuttavia questo presuppone la conoscenza delle tecniche di programmazione orientata agli oggetti.
    La programmazione orientata agli oggetti Ŕ un paradigma di programmazione, che prevede di raggruppare in un'unica entitÓ, ovvero la classe, sia le strutture dati che le procedure che operano su di esse, creando per l'appunto un "oggetto" software dotato di proprietÓ (dati) e metodi (procedure) che operano sui dati dell'oggetto stesso.
    Le classi sono uno strumento per costruire strutture dati che contengano non solo dei dati ma anche il codice per gestirli. I membri di una classe sono dati, chiamati attributi, e metodi, ovvero procedure, che operano su un oggetto.
    Un oggetto Ŕ una istanza di una classe. Un oggetto occupa memoria, la sua classe definisce come sono organizzati i dati in questa memoria. Ogni oggetto possiede tutti gli attributi definiti nella classe, ed essi hanno un valore, che pu˛ mutare durante l'esecuzione del programma come quello di qualsiasi variabile.
    Vediamo ora un esempio di creazione di una nuova classe di oggeti in VBA. Per la precisione creeremo una classe che contiene una sola proprietÓ "Messaggio" di tipo stringa, ed un metodo "Correggi" che modifica la proprietÓ "Messaggio" sostituendo la parola "fare" con i suoi sinonimi.
    Innanzitutto generiamo un nuovo Modulo di Classe di nome CorrettoreDiscorsi.
    'Definiamo la variabile in cui memorizzeremo 
    'il valore della proprietÓ. 
    'Privata perchÚ possa essere usata solamente 
    'all'interno della nostra classe.
    Private mvarMessaggio As String
    
    'Definizione in input della proprietÓ "Messaggio".
    Public Property Let Messaggio(ByVal vDati As String)
        mvarMessaggio = vDati
    End Property
    
    'Definizione in output della proprietÓ "Messaggio".
    Public Property Get Messaggio() As String
        Messaggio = mvarMessaggio
    End Property
    
    'Definizione del metodo che sostituisce la parola "fare".
    Public Sub Correggi()
    Dim NuovaStringa As String, StringaIniziale As String 
    Dim StringaFinale As String
    Dim Posizione As Integer, SceglineUno As Integer
    NuovaStringa = ""
    StringaFinale = ""
    SceglineUno = CInt((4 * Rnd) + 1)
    Select Case SceglineUno
    Case 1
        NuovaStringa = "realizzare "
    Case 2
        NuovaStringa = "compiere "
    Case 3
        NuovaStringa = "creare "
    Case 4
        NuovaStringa = "effettuare "
    Case 5
        NuovaStringa = "attuare "
    End Select
    Posizione = InStr(mvarMessaggio, "fare")
    If Posizione = 0 Then
        mvarMessaggio = "Dovete elaborare un discorso _ 
        che contenga la parola ""fare""!"
    Else
        StringaIniziale = Left(mvarMessaggio, Posizione - 1)
        StringaFinale = Right(mvarMessaggio, Len(mvarMessaggio) _ 
        - (Posizione + 4))
        mvarMessaggio = StringaIniziale & NuovaStringa & StringaFinale
    End If
    End Sub
    	
    N.B.: Notare che abbiamo definito pubbliche sia la definizione della proprietÓ che del metodo, cosý potremo usarle all'interno di tutti i moduli del progetto.
      Per usare la classe appena definita, creiamo una nuova UserForm FrmOgg che contiene i controlli:
    • TxtInput casella di testo multiline.
    • LblOutput controllo etichetta
    • CmdCrea pulsante di comando.
    • CmdEsci pulsante di comando.
    Di seguito il codice associato alla UserForm:
    Private Sub CmdCrea_Click()
        'istanzio l'oggetto Discorso della classe 
        'appena creata CorrettoreDiscorsi
        Set Discorso = New CorrettoreDiscorsi
        'valorizzo la proprietÓ "Messaggio" in input
        Discorso.Messaggio = TxtInput.Text
        'uso il metodo
        Discorso.Correggi
        'la proprietÓ "Messaggio" in output valorizza la label della form
        LblOutput.Caption = Discorso.Messaggio
    End Sub
    
    Private Sub CmdEsci_Click()
        Unload Me
    End Sub