Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [VBA] Passare array ad una funzione con argomento paramArray

    Ho una funzione che calcola il valore più grande in un array:
    codice:
    Function Massimo(ParamArray args() As Variant)
    
    Dim i As Integer
    i = 0
    Dim val_max As Variant
    val_max = args(i)
    
    For i = 1 To UBound(args)
        If args(i) > val_max Then
            val_max = args(i)
        End If
    Next
    
    Massimo = val_max
    Testata e funzionante, il codice sotto funziona:
    codice:
    MsgBox Massimo("pippo", "pluto", "paperino")
    Ora devo passare un array di stringhe alla funzione Massimo:
    codice:
    MsgBox Massimo(allsubFld)
    allsubFld è un array di stringhe, ma ottengo errore 13 di run time, tipo non corrispondente; come si passa un array a paramArray?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    ParamArray ti consente di passare un numero indefinito di argomenti che la funzione "interpreta" come Array. Se passi direttamente un Array, passi un solo argomento, e non un Array di argomenti.
    Per risolvere il problema, devi cambiare la definizione della funzione, utilizzando come argomento un Variant:

    codice:
    Function Massimo(args As Variant)
    
    Dim i As Integer
    i = 0
    Dim val_max As Variant
    val_max = args(i)
    
    For i = 1 To UBound(args)
        If args(i) > val_max Then
            val_max = args(i)
        End If
    Next
    
    Massimo = val_max
    Ovviamente dovrai variare il codice della funzione in modo da controllare che l'argomento sia effettivamente un array, ma in questo modo, se devi passare un array costruito direttamente alla chiamata della funzione scriverai così:

    codice:
    MsgBox Massimo(Array("pippo", "pluto", "paperino"))
    Altrimenti potrai popolare il tuo array in un altro momento, passandolo poi alla funzione:

    codice:
    MsgBox Massimo(allsubFld)


    Boolean
    Ultima modifica di Boolean; 26-05-2015 a 11:20

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 © 2025 vBulletin Solutions, Inc. All rights reserved.