Valorizzare un range



  • Valorizzare un range
    di Nic82 data: 22/02/2011

    Ciao a tutti, torno dopo una lunga assenza nel forum...
    sto provando a creare una sub per riempire di valori casuali il range selezionato grazie ad una matrice dinamica.
    la sub scritta in questo modo mi da errore di indice non incluso nell'intervallo. non capisco...devo mettere un redim da qualche parte???
    il funzionamento della sub dovrebbe essere questo:
    a seconda del range selezionato, crea una matrice dinamica delle dimensioni del range selezionato e riempi le celle con valori casuali da 1 a 90.
    premetto che ho messo option base 1 perchè il limite inferiore della matrice sarà per forza 1, poichè il range ha almeno 1 riga.
    spero di essere stato abbastanza chiaro...grazie a tutti, ciao
     
    Option Base 1
    
    Sub MatrixIntervalloDinamica()
      Nr = Selection.Rows.Count
      Nc = Selection.Columns.Count
    Dim Matrix1()
      For a = 0 To Nr: For b = 0 To Nc
        Matrix1(a, b) = Int(Rnd * 90 + 1)
      Next: Next
      Selection.Value = Matrix1
    End Sub



  • di Mik (utente non iscritto) data: 23/02/2011

    Ciao nik

    per come la vedo io:

    1)non hai bisogno di una matrice dinamica ma ben sì di una matrice bidimensionale. nel tuo caso puoi tranquillamente dichiarare gli indici perchè li conosci a priori:

    dim matrix1 (nr,nc)

    2) hai dichiarato option base 1 e poi inizi i cicli da 0 ... ?!
    mettici un 1 per entrami i cicli

    ciao



  • di Albatros54 (utente non iscritto) data: 23/02/2011

    Prova cosi
    ciao
    albatros54
     
    Sub MatrixIntervalloDinamica()
      nr = Selection.Rows.Count
     nc = Selection.Columns.Count
    Dim Matrix1()
    ReDim Matrix1(nr, nc) As Variant
    
      For a = 0 To nr: For b = 0 To nc
        Matrix1(a, b) = Int(Rnd * 90 + 1)
      Next: Next
      Selection.Value = Matrix1
    End Sub