+ Rispondi al Thread
Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Classi in VBA

  1. #1
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126

    Classi in VBA

    Buongiorno a tutti.
    Sto scrivendo un codice in VBA e avrei bisogno di utilizzare un "Modulo di classe" che tuttavia non mi funziona. Premetto che conosco le classi, che utilizzo in VB.NET, ma non le ho mai utilizzate in VBA.

    Dunque, ho creato un modulo di classe che ho denominato "MyClass". Tra le sue proprietà trovo "Instancing" che può essere "Private" oppure "PublicNotCreatable". Ho scelto la seconda in quanto penso sia l'equivalente di "Classe statica". Quindi ho inserito all'interno la sola Function "Demand" di cui il codice.

    codice:
    Public Function Demand(m As Integer) As singe
        Select Case m
            Case 1: Demand = 88
            Case 2: Demand = 93
            Case 3: Demand = 93
            Case 4: Demand = 97
            Case 5: Demand = 102
            Case 6: Demand = 102
            Case 7: Demand = 102
            Case 8: Demand = 106
            Case 9: Demand = 111
            Case 10: Demand = 112
            Case 11: Demand = 101
            Case 12: Demand = 93
        End Select
    End Function
    In un modulo standard ho inserito una funzione pubblica che calcola la domanda in funzione del mese.

    codice:
    Public Function Domanda(D As Date) As Single
    Dim m As Integer
        m = Month(D)
        Domanda = MyClass.Demand(m)
    End Function
    L'esecuzione del codice non mi da alcun errore ma ritorna un valore non valido. Eseguendo il debug, all'atto di richiamare la funzione Demand si blocca senza dirmi nulla.

    Qualcuno mi dia una dritta please!

  2. #2
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,148

  3. #3
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126
    Grazie gibra per l'interessamento. Tuttavia ho risolto semplicemente istanziando la casse e modificando di conseguenza la funzione nel modulo standard.

    codice:
    Dim theClass As New MyClass
    Public Function Domanda(D As Date) As Single
        Domanda = theClass.Demand(Month(D))
    End Function
    Mi resterebbe da capire cosa significa PublicNotCreatable dato che non è una classe statica.

  4. #4
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    388
    Qui c'è tutto! :-)

  5. #5
    L'avatar di gibra
    gibra non è in linea Amanuense
    Luogo
    Breganze (VI)
    Post
    6,148
    Quote Originariamente inviato da Chico Visualizza il messaggio
    Grazie gibra per l'interessamento. Tuttavia ho risolto semplicemente istanziando la classe
    Infatti non vedevo la dichiarazione...

    Quote Originariamente inviato da Chico Visualizza il messaggio
    Mi resterebbe da capire cosa significa PublicNotCreatable dato che non è una classe statica.
    How to use a class (object) from outside of the VBA project - Office | Microsoft Docs
    https://docs.microsoft.com/en-us/pre...ct-using-class

+ Rispondi al Thread

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi