Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 15 su 15

Discussione: [VBA] UDF excel

  1. #11
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,877
    Quote Originariamente inviata da ing82 Visualizza il messaggio
    - vorrei che la sub venisse richiamata in automatico, come le funzioni di excel, o almeno quando una delle celle contenente i parametri a cui si riferisce viene modificata
    Per questo ti ho parlato di gestione eventi https://www.excel-easy.com/vba/events.html

  2. #12
    Utente di HTML.it L'avatar di ing82
    Registrato dal
    Sep 2014
    Messaggi
    155
    diciamo quindi che per l'automazione abbiamo risolto, ma non riesco a capire se e' possibile passare alla sub delle celle corrispondenti ai parametri 'col mouse' cosi' come si fa con le function.
    Esempio, funzione prova(a as tipo1, b as tipo2)

    posso usare prova(...) mettendola in una qualsiasi cella del foglio, e posso indicargli per a e b qualsiasi cella del foglio (comportamento che definirei flessibile)
    Inoltre, se ho la necessita' di eseguire quella funzione su una serie di dati disposti in colonna, basta che metto la funzione in una prima cella e poi, aggiustando opportunamente i riferimenti, trascinare la cella con la funzione e avere il risultato per tutti i dati.

    Con la sub non riesco a capire come posso, ammesso che sia possibile, ottenere una cosa del genere, anche se da quello che ho letto in giro non mi sembra possibile, cioe' avere sub prova(a as tipo1, b as tipo2) e indicargli di volta in volta, a seconda del bisogno, dove sono le celle in cui andare a leggere a e b.
    Detto in altre parole, quello che sto cercando di realizzare, sono funzioni che trovano applicazione in piu' occasioni, con layout del foglio di calcolo adattato all'occasione, ecco perche' trovo molto comode le function, dato che posso indicare di volta in volta dove stanno questi parametri, mentre con la sub non riesco a capire se cio' e' possibile.

    Da tener conto anche il fatto che spesso e volentieri questa function (o sub, se mai lo diventera'), dovrebbe essere usata con copia incolla/trascinamento tramite mouse per una serie di dati al'interno dello stesso foglio di calcolo.

    Grazie nuovamente
    Ultima modifica di ing82; 15-02-2019 a 12:53

  3. #13
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,877
    Non riesco a seguirti, mi dispiace

  4. #14
    Utente di HTML.it L'avatar di ing82
    Registrato dal
    Sep 2014
    Messaggi
    155
    Provo con un esempio

    codice:
    function arearettangolo(B as double, H as double) as double
        arearettangolo=B*H
    end function
    Una volta che ho creato questa funzione e la rendo disponibile al mio excel tramite un componente aggiuntivo, in tutti i fogli di calcolo in cui avro'
    bisogno di calcolare l'area del rettangolo, bastera' scrivere in una cella arearettangolo(indirizzocella1,indirizzocella2),
    e indirizzocella1 e indirizzocella2 variano su ogni foglio, una volta saranno A1 e A2, una volta saranno q45 r45, ecc, pero' non e' un problema,
    tanto basta che scrivo la formula e seleziono le opportune celle (quando dicevo col mouse...).

    se non fosse per la necessita' di estrarre dalla funzione i valori di alcune variabili intermedie, il problema di uso delle sub non mi si porrebbe.

    Invece avrei la necessita' di estrarre questi ulteriori valori e scriverli in altrettante celle, non prefissate.

    ad esempio, mettiamo che la funzione arearettangolo sia invece cosi'

    codice:
    function arearettangolo(B as double, H as double) as double
        dim p as double
        p=2*(B+H)
        arearettangolo=B*H
    end function
    e che io, oltre al valore di arearettangolo sia interessato anche al valore di p (ovviamente e' solo un esempio fine a se stesso, altrimenti farei molto piu' semplicemente la funzione perimetro...)

    Mi è stato detto di passare un parametro per riferimento alla funzione, in modo che la funzione ne cambi il suo valore, quindi dovrebbe diventare

    codice:
    function arearettangolo(B as double, H as double, byref p as double) as double
        p=2*(B+H)
        arearettangolo=B*H
    end function
    Usata cosi' pero' la funzione non scrive un bel niente nella cella che gli passo come p, proprio perche' e' una funzione, quindi dovrei bypassare la cosa usando una sub, che credo debba diventare

    codice:
    sub subarearettangolo(B as double, H as double, byref p as double)
        call arearettangolo(B,H,p)
    end sub
    quello che vorrei, e' che questa sub possa essere usata in qualsiasi nuovo foglio di lavoro, e che gli si possa dire
    guarda che nel foglio pippo del file topolino, B e' nella cella A1, H nella cella A2 e p nella cella A3, mentre nel foglio Qui del file Qua, B e' nella cella D1, H nella cella D23 e p nella cella Q56.
    Non ho la piu' pallida idea di dove vada a finire il valore dell'area, e se quindi si debba passare un quarto parametro alla sub.

    E' possibile fare una cosa del genere?

    Spero di essermi chiarito

  5. #15
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,877
    Quote Originariamente inviata da ing82 Visualizza il messaggio
    quello che vorrei, e' che questa sub possa essere usata in qualsiasi nuovo foglio di lavoro...
    per questo leggi qui https://support.office.com/en-us/art...0-6e4c3f5ee566 per il resto penso tu debba ridurre le tue aspettative

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved.