selezione multipla



  • selezione multipla
    di Textomb data: 16/04/2013 19:05:27

    Salve a Tutti!!
    ho l'esigenza di operare su una selezione multipla di diversi fogli di calcolo.
    Di seguito il codice scritto con l'errore che non so risolvere... come si fa?

     
    Sub shSelect()
    Dim sh As Worksheet, f() As Variant, j As Byte
    ReDim f(0 To Worksheets.Count)
        For Each sh In Worksheets
        f(j) = sh.Name
        j = j + 1
        Next
    ' Adesso devo operare una selezione multipla su tutti i fogli di lavoro
    ' Così funziona correttamente... e seleziona i primi tre fogli
    Worksheets(Array(f(0), f(1), f(2))).Select
    ' se volessi selzionare tutti i fogli che istruzione dovrei dare?
    ' Pensavo così. Ma mi da errore...!!! Cosa sbaglio???
    Worksheets(Array(WorksheetFunction.Transpose(f))).Select
    End Sub
    



  • di Vecchio Frac data: 16/04/2013 19:13:56

    Non è che ti basta soltanto una cosa del genere?
    Sheets(Array("Foglio1", "Foglio2", "Foglio3")).Select





  • di Vecchio Frac data: 16/04/2013 19:15:07

    Scusa, mi è scappato l'esempio sbagliato.
    Volevo dire che basta solo questo:
    Sheets.Select





  • di Textomb data: 16/04/2013 19:24:25

    ok. Perfetto.
    L'esempio però voleve essere solo esemplificativo.
    In effetti i fogli da selezionare non sono tutti. Sono quasi tutti...
    Io memorizzo quelli che mi serve selezionare in una matrice che poi volevo utilizzare per passare i nomi dei fogli da selezionare. Spero di essere stato chiaro.



  • di Vecchio Frac data: 16/04/2013 20:23:21

    Ma tu hai già trovato la soluzione da te, solo che non la vedi ^_^
     
    Sub multi_select()
    Dim v As Variant
        v = Array("foglio1", "foglio3")
        Sheets(v).Select
    End Sub
    






  • di Textomb data: 16/04/2013 22:56:47

    trovato!!!
    c'era un errore insidioso. L'ho scoperto e mi sembra corretto condividerlo.
    quando ho scritto nel post precedente
    Redim f(0 to Worksheets.count) ho dimensionato la matrice f di un valore in più rispetto al numero totale dei fogli.
    Doveva essere invece
    Redim f(1 to Worksheets.count).
    Riscrivo tutto. Adesso funziona!
    Grazie mille.







     
    Sub shSelect()
    Dim sh As Worksheet, f() As Variant, j As Byte
    ReDim f(1 To Worksheets.Count) ' Deve partire da 1 e non da zero...
        For Each sh In Worksheets
        j = j + 1
        f(j) = sh.Name
        Next
    
    Worksheets(f).Select
    
    End Sub
    



  • di Textomb data: 16/04/2013 22:58:54

    dimenticavo...