riempire una colonna



  • riempire una colonna
    di orsomiki data: 17/01/2013 18:19:42

    due domande:

    1) è soltanto un esrcizio ma lo faccio anche per comodità perchè "mi sono stufato" di ripetere sempre le stesse operazioni
    devo riempire ( usando codice scritto in Sheet3( Sheet2)) la colonna cat ... cella di aprtenza D7
    per esmpio devo copiare krk1 sotto le tre celle vuote con krk1 e via di seguito

    il codice è denominato riempicat
    premesso che funziona così come scritto volevo sapere se concettualmente è giusto
    o si può scrivere in altro modo ( p.e. ho dovuto scrivere Loop Until f = g - 1 mettendo un meno uno altrimenti va oltre l'ultima casella
    e non capisco perchè)

    2) se dovessi nominare l'area nomicat
    con il codice dim as range come si fa? non riesco proprio a farmi entrare in zucca questa modalità
    Grazie



  • di HarryBosch data: 17/01/2013 19:29:38

    per rispondere alla seconda domanda, il ciclo prosegue oltre l'ultimo valore perché il Do...Loop esegue il controllo alla fine delle istruzioni.
    Eventualmente dovresti fare il controllo prima di eseguire le istruzioni:
    Do While
    '...istruzioni
    Loop

    Comunque non inizierei mai un ciclo Do con "If ActiveCell <> "" Then"
    perché la cella attiva al momento potrebbe essere ovunque ^_^

    Preferisco portarmi direttamente nella cella di partenza e, tra l'altro, se hai impostato il range("nomicat") so anche da dove parte: partirà infatti dalla stessa riga di partenza del nomicat:
    riga = Range("nomicat").Row
    e conosci pure la colonna, che sarà spostata di -2 dal nomicat:
    colonna = Range("nomicat").Offset(, -2).Column

    La cella di partenza dei valori da duplicare sarà quindi
    Cells(riga, colonna) che nel tuo caso corrisponde alla cella D6.

    Un altro modo di procedere potrebbe essere come sotto:
    - Assegno ad una variabile il valore cat e con un ciclo passo tutte le celle del range
    - se trovo la cella vuota riempio con il cat, altrimenti tale variabile assumerà il nuovo valore della stringa

     
    Sub riempi()
    Dim cat As String, riga As Integer
        riga = Range("nomicat").Row
        cat = Cells(riga, 4)
        For i = riga + 1 To Range("nomicat").Rows.Count + riga - 1
            If Cells(i, 4) = "" Then
                Cells(i, 4) = cat
            Else
                cat = Cells(i, 4)
            End If
        Next i
    End Sub
    



  • di Vecchio Frac data: 18/01/2013 09:23:01

    cit. " 2) se dovessi nominare l'area nomicat con il codice dim as range come si fa? "
    --->
    Dim rng As Range
    Set rng = [F7].range(cells(1,1),cells([counta(f:f)]-1,1))






  • di HarryBosch data: 18/01/2013 13:38:24

    Avevo perso per strada il punto 2)... ^_^
    Grazie VecchioFrac