Vba: come restituire un array da una funzione


È possibile utilizzare la seguente sintassi di base per restituire un array da una funzione in VBA:

 Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    'generate three random integers and store them in array 
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    'return array as a result of the function
    GenerateRandom = RandValues

End Function

Questo particolare esempio genera tre numeri interi casuali, li memorizza in un array e quindi restituisce l’array come risultato della funzione chiamata GenerateRandom() .

I seguenti esempi mostrano come restituire valori da questa funzione in due modi diversi:

  • Restituisce i valori in una finestra di messaggio
  • Restituisce i valori nelle celle

Andiamo!

Esempio 1: restituisce un array da una funzione e visualizza i valori nella finestra di messaggio

Possiamo utilizzare la seguente sintassi per creare una funzione chiamata GenerateRandom() che genera un array di tre numeri interi casuali, quindi visualizza i numeri interi in una finestra di messaggio utilizzando la funzione MsgBox :

 'define function to generate array of three random integers
Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    GenerateRandom = RandValues

End Function

'define sub to display values from function in a message box
SubDisplayRandom ()

     Dim WS As Worksheet
     Dim RandomValues() As Integer
     Dim i As Integer

     Set WS = Worksheets(" Sheet1 ")
     RandomValues = GenerateRandom()

     j = " Array values: "
     For i = 0 To 2
          j = (j & RandomValues(i) & " ")
     Next i
     MsgBox j

End Sub

Quando eseguiamo questa macro, riceviamo il seguente output:

Tabella di restituzione VBA della funzione

Possiamo vedere che la funzione restituisce gli interi casuali 96 , 87 e 5 in una finestra di messaggio.

Esempio 2: restituisce un array da una funzione e visualizza i valori nelle celle

Possiamo utilizzare la seguente sintassi per creare una funzione chiamata GenerateRandom() che genera un array di tre numeri interi casuali e quindi visualizza i numeri interi che iniziano nella cella A1 in Excel:

 'define function to generate array of three random integers
Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    GenerateRandom = RandValues

End Function

'define sub to display values from function starting in cell A1
SubDisplayRandom ()

     Dim WS As Worksheet
     Dim RandomValues() As Integer
     Dim i As Integer

     Set WS = Worksheets(" Sheet1 ")
     RandomValues = GenerateRandom()

     For i = 0 To 2
          WS.Range(" A1 ").Offset(i, 0).Value = RandomValues(i)
     Next i

End Sub

Quando eseguiamo questa macro, riceviamo il seguente output:

Possiamo vedere che la funzione restituisce gli interi casuali 96 , 87 e 5 dalla cella A1 del nostro foglio di lavoro.

Nota : per restituire i valori della tabella che iniziano in una cella diversa, è sufficiente sostituire A1 nel codice con un riferimento di cella diverso.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni in VBA:

Come restituire un valore da una funzione VBA
Come ottenere il valore di una cella da un altro foglio in VBA
Come utilizzare IsNumeric per verificare se la cella è un numero in VBA

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *