Aggiungi riga dopo tabella



  • Aggiungi riga dopo tabella
    di Joey (utente non iscritto) data: 27/09/2017 15:36:00

    Salve dovrei modificare una macro per aggiungere una riga, provo a spiegare, oltre ad allegare un file esempio e il codi che mi funziona solo su una tabella.
    In un foglio excel sul foglio1 ho delle tabelle con nome, tipo: Dati, Prova, Somme, da tener presente che potrei aggiungere altre tabelle, l’ultima riga di ogni tabella è la riga totale, ora e possibile ogni volta che scrivo in una riga della tabella far aggiungere una riga sotto la riga totale della tabella dove ho scritto?
    Naturalmente il codice lo devo inserire su un modulo, e farlo funzionare anche su altri fogli eventualmente inserisco delle tabelle, tipo foglio2 ecc.

     
    Private Sub Worksheet_Change(ByVal Target As Range)
    CheckArea = ("Dati")
    'CheckArea = ("Prova")
    If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
        If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
        Application.EnableEvents = False
        If Target <> "" Then
        riga = Target.Row + 1
        Rows(riga).Insert Shift:=xlDown
        End If
    End If
        'Application.EnableEvents = True
    End Sub
    
    



  • di Marius44 data: 27/09/2017 23:01:04

    Ciao
    innanzi tutto un consiglio: togli l'apostrofo prima di Application.EnableEvents = True altrimenti non potrai più far nulla.
    Per il tuo problema ho "impostato" la macro sottoindicata che potrai adattare alle tue esigenze (io l'ho impostat solo per la tabella Dati, dando il riferimento alla prima cella - per le altre provvedi tu)

    Fai sapere. Ciao,
    Mario
     
    Sub InserisciRigaDopoTotale()
        Dim Dati As Range
        Dim PrimaCella As Range
        Dim riga as Long
        Set PrimaCella = Range("A6")
        Set Dati = Range(PrimaCella, PrimaCella.End(xlDown))
        ActiveSheet.[Dati].Rows(Dati.Rows.Count).Offset(2, 0).Cells(1).Select
        riga = Selection.Row
        Rows(riga).Insert Shift:=xlDown
        Set Dati = Nothing
        Set PrimaCella = Nothing
    End Sub
    



  • di Joey (utente non iscritto) data: 28/09/2017 11:13:59

    grazie per aver risposto, ho provato la runtime, solo che la riga deve essere aggiunta dopo la riga totale praticamente sotto, e la runtime deve partire appena inserisco un valore nella tabella, io ho provato con Private Sub Worksheet_Change(ByVal Target As Range) solo che la runtme dopo aver aggiunto la riga non esce continua ciclare, altra cosa se possibile fare il controllo sul nome della tabella tipo tabella dati, Prova ecc.
     
    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim Dati As Range
        Dim PrimaCella As Range
        Dim riga As Long
        Set PrimaCella = Range("A6")
        Set Dati = Range(PrimaCella, PrimaCella.End(xlDown))
        ActiveSheet.[Dati].Rows(Dati.Rows.Count).Offset(2, 0).Cells(1).Select
        riga = Selection.Row
        Rows(riga).Insert Shift:=xlDown
        Set Dati = Nothing
        Set PrimaCella = Nothing
    End Sub



  • di Marius44 data: 28/09/2017 12:17:04

    Ciao
    Cosa avevo detto?

    cit.:"Per il tuo problema ho "impostato" la macro sottoindicata che potrai adattare alle tue esigenze (io l'ho impostat solo per la tabella Dati, dando il riferimento alla prima cella - per le altre provvedi tu)"

    Io non conosco il tuo gradi conoscenza di VBA ma se hai scritto tu la macro che hai postato al #1 dovresti essere in grado di fare quanto chiesto.
    Scusa la franchezza: una cosa è chiedere un aiuto altra ... sperare che altri facciano il lavoro al posto tuo.

    Ciao,
    Mario

    PS - riguardo alle richieste:
    - per il numero di riga prima di questo codice: riga = Selection.Row aggiungi riga=riga+1
    - per il nome tabella devi crearti un ciclo che passi in rassegna tutte le tabelle ed assegno il nome di ciascuna tabella ad una variabile
    - la mia è una Sub generica che devi adattare all'evento WorkSheet_Change per le colonne interessate (che devono essere sempre la prima colonna di ciascuna tabella)
    Mia aggiunta personale: non pensare che sia facilissimo.



  • di Joey (utente non iscritto) data: 30/09/2017 18:08:22

    grazie Marius44 per l'aiuto e per la spiegazione, mi metto all'opera per risolvere il problema.



  • di Joey (utente non iscritto) data: 30/09/2017 18:09:29

    ok