Moderatori: Anthony47, Flash30005
Sub Calcola()
dati = 2
a = Somma(dati)
Cells(3, 2) = a
b = Somma(dati)
Cells(4, 2) = b
c = Somma(dati)
Cells(5, 2) = c
End Sub
Function Somma(ByVal dati As Byte) As Variant
Dim calc(1 To 3)
calc(1) = dati + 2
calc(2) = dati + 4
calc(3) = dati + 6
Somma = calc
End Function
Sub Calcola()
lato = 2
a = Risultato(lato) ' perimetro
Cells(3, 2) = a
b = Risultato(lato) ' area
Cells(4, 2) = b
c = Risultato(lato) ' volume
Cells(5, 2) = c
End Sub
Function Risultato(ByVal n As Byte) As Variant
Dim calc(1 To 3)
calc(1) = n * 4
calc(2) = n * n
calc(3) = n * n * n
Risultato = calc
End Function
Function cubo(ByVal Lato As Double) As Variant
'restituisce lista a 3 posizioni con somma spigoli, area, volume
Dim myCubos(1 To 3) As Double
myCubos(1) = Lato * 12
myCubos(2) = (Lato ^ 2) * 6
myCubos(3) = Lato ^ 3
If Parent.Caller.Rows.Count > 1 Then
cubo = Application.WorksheetFunction.Transpose(myCubos)
Else
cubo = myCubos
End If
End Function
Una "Function" e' fatta per restituire dei valori direttamente al chiamante, che sia una formula excel o un macro.Se volessi memorizzare i risultati in tre variabili, senza scrivere nelle celle,
si può fare?
Function cubo1(ByVal Lato As Double)
'restituisce lista a 3 posizioni con somma spigoli, area, volume
Dim myCubos(1 To 3) As Double
myCubos1(1) = Lato * 12
myCubos1(2) = (Lato ^ 2) * 6
myCubos1(3) = Lato ^ 3
End Function
Anthony47 ha scritto:Una "Function" e' fatta per restituire dei valori direttamente al chiamante, che sia una formula excel o un macro.Se volessi memorizzare i risultati in tre variabili, senza scrivere nelle celle,
si può fare?
Vista la domanda, immagino che parli di Function richiamabili solo da altre macro.
Comunque la cosa e' fattibile usando variabili condivise con la macro chiamante, quindi comuni a livello di modulo oppure a livello di progetto; ....
=myCubo(A1)
=myCubo(A1;"P")
=myCubo(A1;"A")
=myCubo(A1;"V")
Function MyCubo(ByVal Lato As Double, Optional Misura As String = "") As Variant
'restituisce lista a 3 posizioni con somma spigoli, area, volume
'oppure la singola misura se specificata come parametro opzionale:
'"P" = Perimetro
'"A" = Area
'"V" = Volume
Dim myCubos(1 To 3) As Double
myCubos(1) = Lato * 12
myCubos(2) = (Lato ^ 2) * 6
myCubos(3) = Lato ^ 3
Select Case Misura
Case "P"
MyCubo = myCubos(1)
Case "A"
MyCubo = myCubos(2)
Case "V"
MyCubo = myCubos(3)
Case Else
MyCubo = myCubos
End Select
End Function
Sub Prova()
Const Lato As Double = 3 'misura del lato
Dim cubo() As Double
Dim Perimetro As Double
Dim Area As Double
Dim Volume As Double
cubo = MyCubo(Lato)
Perimetro = cubo(1)
Area = cubo(2)
Volume = cubo(3)
MsgBox "in un cubo di lato" & vbTab & Lato & vbCrLf & _
"il perimetro misura " & vbTab & Perimetro & vbCrLf & _
"l'area misura " & vbTab & Area & vbCrLf & _
"il volume misura " & vbTab & Volume, vbInformation
End Sub
Sub Prova2()
Const Lato As Double = 3 'misura del lato
Dim Perimetro As Double
Dim Area As Double
Dim Volume As Double
Perimetro = MyCubo(Lato, "P")
Area = MyCubo(Lato, "A")
Volume = MyCubo(Lato, "V")
MsgBox "in un cubo di lato" & vbTab & Lato & vbCrLf & _
"il perimetro misura " & vbTab & Perimetro & vbCrLf & _
"l'area misura " & vbTab & Area & vbCrLf & _
"il volume misura " & vbTab & Volume, vbInformation
End Sub
Sub PoligonoRettangolare()
Dim s1 As Double 'Lato minore
Dim s2 As Double 'Lato maggiore
Dim s3 As Double 'Altezza
Dim s4 As Double 'Peso specifico liquido di riempimento
Dim p1 As Double
Dim p2 As Double
Dim p3 As Double
Dim p4 As Double
s1 = 3
s2 = 5
s3 = 4
s4 = 1.2
p1 = Calcola(s1, s2, s3, s4, "P")
p2 = Calcola(s1, s2, s3, s4, "S")
p3 = Calcola(s1, s2, s3, s4, "T")
p4 = Calcola(s1, s2, s3, s4, "V")
End Sub
Function Calcola(ByVal s1 As Double, ByVal s2 As Double, ByVal s3 As Double, ByVal s4 As Double, Optional ByVal Risultato As String = "") As Object
Dim Calcolo(4) As Double
Dim n1 As Double
Dim n2 As Double
Dim n3 As Double
Dim n4 As Double
'-------- Calcolo Perimetro -------------------------------
n1 = s1 * 2 + s2 * 2
'-------- Calcolo Area base -------------------------------
n2 = s1 * s2
'-------- Calcolo Volume ----------------------------------
n3 = n2 * s3
'-------- Calcolo Peso liquido ----------------------------
n4 = n3 * s4
Calcolo(1) = n1
Calcolo(2) = n2
Calcolo(3) = n3
Calcolo(4) = n4
Select Case Risultato
Case "P"
Risultato = Calcolo(1)
Case "S"
Risultato = Calcolo(2)
Case "T"
Risultato = Calcolo(3)
Case "V"
Risultato = Calcolo(4)
Case Else
Risultato = Calcolo(0)
End Select
End Function
Torna a Applicazioni Office Windows
Inserire add.in nella barra di avvio veloce in excel 2003 Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 4 |
Excel: problema con date se devo unirle a testi Autore: valle1975 |
Forum: Applicazioni Office Windows Risposte: 5 |
confrontare e evidenziare 2 fogli excel Autore: niccia |
Forum: Applicazioni Office Windows Risposte: 7 |
[EXCEL] controllo corrispondenza tra valori con un vincolo Autore: sbs |
Forum: Applicazioni Office Windows Risposte: 9 |
Visitano il forum: Nessuno e 9 ospiti