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

Discussione: Variabile strutturata (Type) in argomento

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

    Variabile strutturata (Type) in argomento

    Qualcuno mi sa dire come è possibile passare una variabile dichiarata con Type in argomento ad una Function ?
    In questo semplice codice ho definito una variabile di tipo GEV, composta da tre valori. La Function Prodotto vuole ottenere il prodotto di questi tre valori.

    codice:
    Type GEV
        alfa As Single
        eps As Single
        k As Single
    End Type
    
    Public Function Prodotto(MyGEV As GEV) As Single
        Pippo = MyGEV.alfa * MyGEV.eps * MyGEV.k
    End Function
    Ma cosa scrivo poi nella formula: =Prodotto( ? )
    Ho tentato di scrivere i tre valori in tre celle attigue e a selezionarle insieme, come se si trattasse di un range, ma naturalmente non funziona.

  2. #2
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    388
    Scusa ma perché passare da una UDF quando puoi moltiplicare le 3 celle direttamente( Es: =A1*A2*A3)?

  3. #3
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126
    Era solo un esempio.
    A volte le variabili da passare sono tante e organizzarle in una struttura renderebbe tutto più leggibile.

  4. #4
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,431
    Devi passare una variabile strutturata...
    codice:
    Dim mT As GEV
    mT.Alfa=1
    mT.eps=2
    mT.k=5
    
    Msgbox prodotto(mT)
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  5. #5
    Sgrubak non è in linea Scolaretto
    Luogo
    Torrazza Piemonte
    Post
    388
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Devi passare una variabile strutturata...
    Funziona sicuramente a livello di codice VBA, ma credo lui stia cercando di sviluppare una funzione utilizzabile all'interno del foglio.
    Avanzando questo presupposto, si potrebbe usare la funzione PRODOTTO nativa di Excel.

    Altrimenti, se necessita di qualcosa di più specifico, può creare una UDF il cui scheletro potrebbe essere il seguente:
    codice:
    Public Function MioProdotto(celle As Range) As Single
    Dim c As Range
    MioProdotto = 1
    For Each c In celle
        MioProdotto = MioProdotto * c.Value
    Next c
    End Function
    Ovviamente è necessario implementare tutta la dovuta gestione degli errori, ad esempio per il passaggio di parametri non validi, ecc...
    Non credo però lui possa salvare nella proprietà Value di una cella una tipo personalizzato. Ad esempio assegnare il formato GEV alla cella e poi sfruttarlo. Credo, al netto delle mie conoscenze, che lui debba splittare i parametri del tipo GEV in 3 celle distinte e poi operare su quelli. Come se fosse un vettore o una matrice.
    Spero di essermi spiegato... :-)
    Ultima modifica di Sgrubak; 29-01-2020 17:26  Motivo: corretto codice

  6. #6
    L'avatar di @Alex
    @Alex non è in linea Very Important Person
    Post
    16,431
    Mi pare abbia ribadito.chiaramenteha che il prodotto era solo un esempio per capire Il metodo... quindi ora ha le indicazioni di come si usa, poi avrà modo di sviluppare nello specifico la sua esigenza.
    Ricorda che il vba di Excel supporta anche le classi e tutto quanto può arricchire la fantasia strutturata della programmazione ad oggetti quindi non essere limitato nelle opportunità che possono essere applicate.
    @Alex
    Il CROSSPOST è VIETATO
    Mirror al vecchio sito WEB(salvare i Demo riassegnando l'estensione (.Zip/.Rar/.Exe in base all'icona...):
    http://mirror.masterdrive.it/alessandrobaraldi/
    Leggi il
    Regolamento del Forum e nel comprenderne la filosofia rispettalo.

  7. #7
    Chico non è in linea Scolaretto
    Luogo
    Padova
    Post
    126
    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Funziona sicuramente a livello di codice VBA, ma credo lui stia cercando di sviluppare una funzione utilizzabile all'interno del foglio.
    Sì la questione è questa. Il problema non è il codice ma come scrivere la formula. So che vi sono altri metodi per arrivare a un risultato, ma con una variabile strutturata il codice risulterebbe più leggibile.

    Quote Originariamente inviato da Sgrubak Visualizza il messaggio
    Credo, al netto delle mie conoscenze, che lui debba splittare i parametri del tipo GEV in 3 celle distinte e poi operare su quelli. Come se fosse un vettore o una matrice.
    Al momento questa è la soluzione che ci va più vicina. Non è molto diverso, ma è necessario ricordarsi l'ordine dei parametri nel range.
    Con la variabile strutturata al posto degli indici si scrivono i nomi dei campi della variabile, ed è più facile accorgersi di eventuali errori.

+ Rispondi al Thread

Permessi di invio

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