Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207

    Vba Argomento Non Facoltativo Collezioni

    Creo una Funzione nel modulo

    codice:
    Function Anno(multi as Collection) As Collection
    Nel foglio di lavoro, nella sezione Option Explicit dichiaro

    codice:
    Dim Coll As New Collection
    Inserisco alcuni dati nella collezione coll...
    Successivamente, in un form, cerco di fare

    codice:
    Private Sub cmdOK_Click()
    Anno(Coll)
    ...
    L'applicazione mi segnala "Argomento non facoltativo" relativo a Coll...
    Magari sto perdendo io qualcosa per strada...

    Intanto ne approfitto per ringraziare tutti per la disponibilità e la pazienza

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Non so cosa tu debba fare della tua Function ma visto che passi una Collection e restituisci una Collection puoi sostituire la Function con una Sub.

    codice:
    Sub Anno(Byref multi as Collection)
    'Tuo codice.....
    'Ad esempio
    multi.Add "1998"
    End Sub
    Sbagliare è umano, perseverare è diabolico.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    Ah ok... provo questa soluzione
    Il ByRef è obbligatorio ? a cosa serve ?
    Grazie

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Se come penso tu passi la Collection, la modifichi e vuoi che la Function ti restituisca la tua Collection modificata...si il ByRef è obbligatorio.

    lele85red
    .....a cosa serve ?
    Significa che passi alla Sub la collection come riferimento invece che come valore.
    Sbagliare è umano, perseverare è diabolico.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    Purtroppo essendo dati sensibili non posso postare tutto... so che la cosa è ancora più difficile...

    Ho fatto le modifiche di cui abbiamo parlato

    Nel modulo:
    codice:
    Sub Anno(ByRef multi As Collection)
        For s = 1 To 3000
              If (....) Then
              Anno.Add Foglio1.Cells(s, 5)
              End If
        Next s
    End Sub
    Nel foglio di lavoro, prima:
    codice:
    Option Explicit
    Dim CollAnno As New Collection
    Successivamente

    codice:
    Private Sub cmdOK_Click()
    ...
    Anno(CollAnno)
    ...
    CollAnno presenta dei valori.
    quando clicco su OK l'errore segnalato è " Argomento non facoltativo"...

  6. #6
    codice:
    Sub Anno(ByRef multi As Collection)
    For s = 1 To 3000
              If (....) Then
              Anno.Add Foglio1.Cells(s, 5)
              End If
        Next s
    End Sub
    Non è che il codice dovrebbe essere:
    ...
    multi.add Foglio1.Cells(s,5)
    ......

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Originariamente inviato da lele85red
    Ho fatto le modifiche di cui abbiamo parlato
    Nel modulo:
    codice:
    Sub Anno(ByRef multi As Collection)
        For s = 1 To 3000
              If (....) Then
              Anno.Add Foglio1.Cells(s, 5)
              End If
        Next s
    End Sub
    Non mi sembra, ti avevo scritto:

    codice:
    Sub Anno(Byref multi as Collection)
    'Tuo codice.....
    'Ad esempio
    multi.Add "1998"
    End Sub
    Soltec
    Non è che il codice dovrebbe essere:
    ...
    multi.add Foglio1.Cells(s,5)
    ......
    Infatti.
    Sbagliare è umano, perseverare è diabolico.

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    No aspetta, non è chiaro...

    Io volevo creare una funzione a cui avrei dato in "pasto" una collezione e , dopo i vari calcoli necessari, restituisce un altra collezione....

    function COLLEZIONE ( VECCHIA COLLEZIONE ) as Collection

    Se uso una sub,
    codice:
    Sub Anno(Byref multi as Collection)
    'Tuo codice.....
    'Ad esempio
    multi.Add "1998"
    End Sub
    Do in pasto multi, e poi modifico multi...

    Anno(CollAnno) se collanno è una collezione , cosa mi restituisce? collanno con 1998 aggiunto ?

    Cmq anche cosi modificato, mi da " Argomento non facoltativo"...

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    970
    Bastava parlare........questo codice l'ho testato per cui!!!!!

    codice:
    Private Sub CommandButton1_Click()
    Dim coll As New Collection
    Dim coll2 As New Collection
    coll.Add "mario"
    coll.Add "mario2"
    coll.Add "mario3"
    coll.Add "mivhele"
    Call Anno(coll, coll2)
     End Sub
    
    
    Sub Anno(multi As Collection, ByRef multi2 As Collection)
    For s = 1 To multi.Count
    If multi.Item(s) = "mario" Then
    multi2.Add multi.Item(s)
    End If
    Next
    End Sub
    Sbagliare è umano, perseverare è diabolico.

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.