|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Sep 2009
Città: Cantù
Messaggi: 21
|
[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 |
|
|
|
|
|
#2 | ||
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Quote:
Quello che vuoi tu è questo : Codice:
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
Codice:
Private Sub CommandButton1_Click()
Risultati 100, 50, "Foglio2"
End Sub
|
||
|
|
|
|
|
#3 |
|
Registered User
Iscritto dal: Sep 2009
Città: Cantù
Messaggi: 21
|
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.
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
|
|
|
|
|
#5 |
|
Registered User
Iscritto dal: Sep 2009
Città: Cantù
Messaggi: 21
|
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... Ultima modifica di ficuste : 24-02-2010 alle 09:52. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Aug 2004
Messaggi: 311
|
Quote:
Codice:
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 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)
__________________
Senior Member Registrato il: Jan 2001 Messaggi: 2609 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:32.




















