creazione macro riga pre impostata



  • creazione macro riga pre impostata
    di fpistolesi data: 29/07/2015 14:16:09

    Ciao a tutti, per un excel che devo creare avrei bisogno di creare una macro che genera una riga con del contenuto pre impostato. La macro dovrebbe creare la riga partendo dalla cella selezionata con il cursore. In allegato troverete un file di test dove ho creato una macro che dovrebbe replicare la riga num 5 dove partendo appunto dalla cella selezionata. Quando avvio la macro però viene solamente scritto nella cella la parola content1. Qualcuno mi può dare una mano? L'idea dovrebbe poi svilupparsi con dei bottoni che generano le righe pre impostate in maniera differente.

    Grazie per l'aiuto!
     
    ub RigaPreImpostata()
    '
    ' RigaPreImpostata Macro
    '
    
    '
        ActiveCell.FormulaR1C1 = "content1"
        Range("B5").Select
        ActiveCell.FormulaR1C1 = "content2"
        Range("C5").Select
        ActiveCell.FormulaR1C1 = "content3"
        Range("A5:E5").Select
        Range("E5").Activate
        Selection.Borders(xlDiagonalDown).LineStyle = xlNone
        Selection.Borders(xlDiagonalUp).LineStyle = xlNone
        With Selection.Borders(xlEdgeLeft)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlEdgeTop)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlEdgeBottom)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlEdgeRight)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlInsideVertical)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
        With Selection.Borders(xlInsideHorizontal)
            .LineStyle = xlContinuous
            .ColorIndex = 0
            .TintAndShade = 0
            .Weight = xlThin
        End With
    End Sub
    



  • di alfrimpa data: 29/07/2015 14:37:39

    Ciao fpistolesi

    Non essendoci un file allegato è difficile risponderti.

    Mi limito a suggerirti una semplice macro che inserisce nelle celle a1, b1 e c1 content1, content2 e content3

    Alfredo
     
    Sub intest()
    Dim i as Integer
    For i = 1 to 3
         Cells(0, i).Value = "content" & i
    Next i
    End Sub






  • di fpistolesi data: 29/07/2015 15:17:10

    Grazie alfredo, ti allego un file molto semplice. Vorrei che la riga gialla venga replicata partendo da una cella che scelgo nel foglio. Quando avvio la macro viene eseguita solo la prima operazione ossia scrivere a nella cella selezionata! Grazie ancora!



  • di alfrimpa data: 29/07/2015 15:28:33

    Ciao fpistolesi

    Purtroppo (per te) sono in vacanza e non ho con me il pc per cui anche se ho delle idee non posso testarle adeguatamente.

    Sicuramente qualche altro utente ti risponderà prima di lunedì data del mio rientro a casa.

    Alfredo





  • di Marius44 data: 29/07/2015 15:36:53

    Ciao fpistolesi

    @alfrimpa - Alfredo scusa l'intromissione.

    @fpistolesi
    nel file allegato la sub esegue quello che gli dici di fare. Se la rileggi rigo dopo rigo vedrai che:
    activecell ==> ti scrive quello che vuoi nella cella attiva
    poi passi alla cella "B1" (quindi non alla cella successiva alla ex-cella-attiva ma ad una cella ben definita).

    Se vuoi che le cinque caselle delle prime cinque colonne riportino quello che vuoi devi PRIMA "vedere" qual'è la colonna della cella attiva e poi assegnare le colonne successive alla stessa riga.

    Assegna ad una variabile le colonna della cella attiva; ad esempio:
    cln=activecell.column
    poi prosegui assegnando il valore cln+1 alla cella successiva e così via.

    Prova e ciao
    Mario



  • di Vecchio Frac data: 29/07/2015 15:41:18

    Il codice del file allegato non coincide con quello dell'esempio del tuo primo post.
    Quello che non è affatto chiaro è cosa vuoi ottenere.
    Il file di test scrive nella cella corrente il valore della prima cella del range A1:E1 e poi seleziona detto range. Il codice è prodotto dal registratore di macro, che genera una schifezza inguardabile... e deve essere aggiustato.

    cit. "Vorrei che la riga gialla venga replicata partendo da una cella che scelgo nel foglio"
    ---> Cioè il range A1:E1. Il codice sottostante copia tutto il range interessato nella posizione della cella attiva, formattazione compresa (colori, bordi, ecc.)

     
    sub ricopia()
        range("A1:E1").copy activecell
    end sub






  • di alfrimpa data: 29/07/2015 15:41:33

    Ci mancherebbe Mario avevo richiesto io l'intervento di altri essendo io "impsibilitato" a fornire un corretto riscontro.

    Grazie del tuo intervento

    Alfredo





  • di Vecchio Frac data: 29/07/2015 15:43:38

    @marius
    Dai per scontato che l'OP voglia ricopiare le colonne da A a E della riga su cui si trova la cella attiva, ma non è stato specificato così e io l'ho preso alla lettera. Gli utenti dovrebbero abituarsi a essere più espliciti.

    @alfredo
    Goditi il sole ^_^





  • di alfrimpa data: 29/07/2015 18:47:10

    Grazie Francesco.

    Purtroppo domenica sera rientro; speriamo che ExcelVba mi aiuti a trascorrere piacevolmente i giorni che mi separano dalla prossima andata in vacanza

    Alfredo

    P.S. Avrei dovuto pensare alla tua soluzione: la più semplice ed immediata ma chissà perchè le cose semplici non mi vengono mai in mente prima





  • di Vecchio Frac data: 29/07/2015 19:40:29

    Bè non è detto che la mia interpretazione sia quella corretta :)