View Full Version : [Excel VBA] Funzione creata dall'utente in VBA
Ciao a tutti, non prendo in mano VBA da un sacco di tempo e avrei un problema.
Devo scrivere una funzione "user defined" che praticamente esegue più operazioni ed espande il contenuto dei risultati su più celle, non soltanto su quella dove è stata inserita la funzione. Per esempio, se ho una funzione che esegue la somma, la differenza e la moltiplicazione di due interi passati come parametri, voglio che la funziona scriva i tre risultati in tre celle diverse. Come fare? C'entrano qualcosa gli array?
Grazie
Devo scrivere una funzione "user defined" che praticamente esegue più operazioni ed espande il contenuto dei risultati su più celle, non soltanto su quella dove è stata inserita la funzione.
Errore. Questa non è una Funzione, e in ogni caso non va messa in una cella. Semmai è una Public Sub che deve stare in un Modulo.
Per esempio, se ho una funzione che esegue la somma, la differenza e la moltiplicazione di due interi passati come parametri, voglio che la funziona scriva i tre risultati in tre celle diverse. Come fare? C'entrano qualcosa gli array?
No, in questo caso specifico gli Array non c'entrano nulla.
Quello che vuoi tu è questo :
Public Sub Risultati(num1 As Integer, num2 As Integer, nomeFoglio As String)
Dim somma As Long
somma = num1 + num2
Dim differenza As Long
differenza = num1 - num2
Dim prodotto As Long
prodotto = num1 * num2
Sheets(nomeFoglio).Range("A1").FormulaR1C1 = somma
Sheets(nomeFoglio).Range("A2").FormulaR1C1 = differenza
Sheets(nomeFoglio).Range("A3").FormulaR1C1 = prodotto
End Sub
E ad es. la usi così :
Private Sub CommandButton1_Click()
Risultati 100, 50, "Foglio2"
End Sub
;)
Se scrivo che voglio una FUNZIONE, è perchè deve essere una FUNZIONE e non una procedura o "Sub". La Sub la sapevo scrivere anche da solo.
Se scrivo che voglio una FUNZIONE, è perchè deve essere una FUNZIONE e non una procedura o "Sub". La Sub la sapevo scrivere anche da solo.
Auguri.
Allora tolgo decisamente il disturbo. :ciapet:
UP!
Rispiego il problema: io ho bisogno di una funzione VBA user-defined (tipo quelle che richiami scrivendo in una cella di Excel "=NOME_FUNZIONE(parametri)") che esegua determinate operazioni e visualizzi il contenuto di queste operazioni nella cella in cui ho scritto la funzione ma anche nelle celle vicine, eventualmente sovrascrivendone il contenuto. Non mi serve una Procedura (Sub in VBA) perchè poi lo stesso meccanismo lo devo applicare a una funzione già esistente.
Ad esempio: se ho una funzione "=eseguiQuery(querySQL)" che esegue una interrogazione ad un DB, il risultato della funzione sarà ovviamente uno o più record. Come faccio a stampare il/i record nelle celle vicine a quella dove ho richiamato la funzione? Spero sia chiaro...
Ciao a tutti, non prendo in mano VBA da un sacco di tempo e avrei un problema.
Devo scrivere una funzione "user defined" che praticamente esegue più operazioni ed espande il contenuto dei risultati su più celle, non soltanto su quella dove è stata inserita la funzione. Per esempio, se ho una funzione che esegue la somma, la differenza e la moltiplicazione di due interi passati come parametri, voglio che la funziona scriva i tre risultati in tre celle diverse. Come fare? C'entrano qualcosa gli array?
Grazie
Function f_aaa(a, b) As Variant
Dim v(1 To 1, 1 To 3) As Variant
v(1, 1) = a + b
v(1, 2) = a - b
v(1, 3) = a * b
f_aaa = v
End Function
selezioni tre celle riga adiacenti > Ctrl+Alt+Enter
Le funzioni in VBA possono restituire scalari, vettori e matrici a piacere.
Ma anche vettori di vettori (matrici di matrici): a(1,6)(1,8,4)(3)(1,3,7,8,5)
;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.