Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Aggiunta righe con macro

87 views
Skip to first unread message

Davide Benedetti

unread,
Jan 16, 2013, 10:34:36 AM1/16/13
to
Buongiorno a tutti,
ho un problema con una macro che mi permette di aggiungere 5 righe di volta in volta, mantenendo la formattazione, sopra la riga Saldi Finali.
In internet ho trovato una macro, ma non mi formatta a dovere le celle, ovvero nella colonna G, non ricopia la formattazione. Inoltre cosa meno importante, ma che preferirei sistemare, è che quando avvio la macro la cella attiva mi si sposta sulla colonna J...
La macro è la seguente:

Sub aggiungirighe()
'
' aggiungirighe Macro
' Aggiunge 5 righe

For x = 1 To 5
Columns("A:A").Select
Range("A1").Activate
Selection.Find(What:="Saldi finali", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
riga = ActiveCell.Row
'riga = riga - 1
Range(Cells(riga, 1), Cells(riga, 1)).Activate
ActiveCell.EntireRow.Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
rigaorig = riga + 1
Range("n4").Select
Selection.Copy
Range(Cells(riga, 7), Cells(riga, 7)).Select
ActiveSheet.Paste
Range("n3").Select
Selection.Copy
Range(Cells(riga, 10), Cells(riga, 10)).Select
ActiveSheet.Paste
Next x

End Sub

Grazie mille in anticipo a tutti!

Maurizio Borrelli

unread,
Jan 16, 2013, 11:55:05 AM1/16/13
to
Il giorno mercoledì 16 gennaio 2013 16:34:36 UTC+1, Davide Benedetti ha scritto:
> ho un problema con una macro che mi permette di aggiungere 5 righe di volta in volta, mantenendo la formattazione, sopra la riga Saldi Finali.
> In internet ho trovato una macro, ma non mi formatta a dovere le celle, ovvero nella colonna G, non ricopia la formattazione. Inoltre cosa meno importante, ma che preferirei sistemare, è che quando avvio la macro la cella attiva mi si sposta sulla colonna J...
> La macro è la seguente:
[...]

Ciao Davide,
temo di non aver ben compreso cosa vuoi ottenere. Parli di "mantenere la formattazione" poi nel codice ci sono dei Copy e Paste. Ad ogni buon conto facci sapere quanto il seguente codice e` distante da quel che vuoi ottenere. Cosi` prendiamo le misure.

Sub test()
Dim sh As Excel.Worksheet
Dim rng As Excel.Range

Set sh = ActiveSheet
Set rng = sh.Cells.Find(What:="Saldi finali" _
, After:=ActiveCell _
, LookIn:=xlFormulas _
, LookAt:=xlPart _
, SearchOrder:=xlByRows _
, SearchDirection:=xlNext _
, MatchCase:=False _
, SearchFormat:=False)
sh.Range(rng, rng.Offset(4)).EntireRow.Insert
Set rng = Nothing
Set sh = Nothing
End Sub

--
Ciao!
Maurizio

Davide Benedetti

unread,
Jan 16, 2013, 12:02:27 PM1/16/13
to
Ciao Maurizio,
e grazie per avermi risposto subito.
Non sono molto pratico di macro, l'ho copiata da internet e non conosco il linguaggio VBA.
La macro è abbastanza completa ma come ho cercato di spiegare prima, vorrei con la macro, aggiungere 5 righe con gli stessi colori di riempimento e gli stessi bordi, sopra la riga in cui nella prima colonna c'è scritto Saldi Finali.
Se non riesco a spiegarmi, potrei inviarti il file direttamente...
Grazie mille!
Davide

Maurizio Borrelli

unread,
Jan 16, 2013, 12:49:37 PM1/16/13
to
Il giorno mercoledì 16 gennaio 2013 18:02:27 UTC+1, Davide Benedetti ha scritto:
> Ciao Maurizio,
>
> e grazie per avermi risposto subito.

Di niente. Solo dicci una cosa, hai eseguito il codice che ho postato? Di quanto e` diverso da quel che vuoi tu?
--
Ciao!
Maurizio

Davide Benedetti

unread,
Jan 17, 2013, 2:35:20 AM1/17/13
to
Ciao Maurizio,
scusa ma non avevo notato il tuo codice.
Funziona alla grande! Sei stato gentilissimo!
Ciao.
Davide

Maurizio Borrelli

unread,
Jan 17, 2013, 2:49:58 AM1/17/13
to
Il giorno giovedì 17 gennaio 2013 08:35:20 UTC+1, Davide Benedetti ha scritto:
> Funziona alla grande! Sei stato gentilissimo!

Ciao Davide,
grazie a te del riscontro!
--
Ciao!
Maurizio

Davide Benedetti

unread,
Jan 17, 2013, 3:58:13 AM1/17/13
to
Scusa Maurizio,
ma usandolo mi sono accorto di un problemino.
Quando aggiungo le righe, le formule sulla riga in cui nella prima colonna c'è scritto Saldi Finali, non si aggiornano...
Mi puoi aiutare?
Grazie.
Davide

Davide Benedetti

unread,
Jan 17, 2013, 4:30:24 AM1/17/13
to
Help!

Maurizio Borrelli

unread,
Jan 17, 2013, 4:43:20 AM1/17/13
to
Il giorno giovedì 17 gennaio 2013 09:58:13 UTC+1, Davide Benedetti ha scritto:
> Scusa Maurizio,
> ma usandolo mi sono accorto di un problemino.
> Quando aggiungo le righe, le formule sulla riga in cui nella prima colonna c'è scritto Saldi Finali, non si aggiornano...

Ciao Davide,
questa come va?

Sub aMacro()
Dim sh As Excel.Worksheet
Dim rng As Excel.Range

Set sh = ActiveSheet
Set rng = sh.Cells.Find(What:="Saldi finali" _
, After:=ActiveCell _
, LookIn:=xlFormulas _
, LookAt:=xlPart _
, SearchOrder:=xlByRows _
, SearchDirection:=xlNext _
, MatchCase:=False _
, SearchFormat:=False)
With rng
Set rng = sh.Range(.Offset(-1) _
, .Offset(3, .CurrentRegion.Columns.Count - 1))
End With
With rng
.Insert xlShiftDown
.Resize(1).Copy .Offset(-5).Resize(1)
.Resize(1).ClearContents
End With

Davide Benedetti

unread,
Jan 17, 2013, 4:55:18 AM1/17/13
to
Purtoppo adesso mi aggiunge 5 righe solo nella prima colonna...

Maurizio Borrelli

unread,
Jan 17, 2013, 6:03:04 AM1/17/13
to
Il giorno giovedì 17 gennaio 2013 10:55:18 UTC+1, Davide Benedetti ha scritto:
> Purtoppo adesso mi aggiunge 5 righe solo nella prima colonna...

Urge allora vedere com'e` fatto il file. Perche` io ho usato "CurrentRegion" ma com'e` la tua "Region" non lo so. Potresti usare SkyDrive per condividere un file di esempio, depurato degli eventuali dati sensibili. Qui le istruzioni:
http://answers.microsoft.com/it-it/office/forum/officeversion_other-office_install/come-pubblicare-file-ed-immagini-nei-forum-di/00e17579-87b8-404b-9544-efea19cf4b8a
Oppure un altro servizio di condivisione a tuo piacre.
--
Ciao!
Maurizio

Davide Benedetti

unread,
Jan 17, 2013, 11:12:16 AM1/17/13
to

plinius

unread,
Jan 17, 2013, 3:10:07 PM1/17/13
to
Nalla macro di Maurizio, cambia
sh.Range(rng, rng.Offset(4)).EntireRow.Insert
in
rng.Offset(-1).Resize(5).EntireRow.Insert

-------------------
Dim rng As Excel.Range

Set sh = ActiveSheet
Set rng = sh.Cells.Find(What:="Saldi finali" _
, After:=ActiveCell _
, LookIn:=xlFormulas _
, LookAt:=xlPart _
, SearchOrder:=xlByRows _
, SearchDirection:=xlNext _
, MatchCase:=False _
, SearchFormat:=False)
rng.Offset(-1).Resize(5).EntireRow.Insert
Set rng = Nothing
Set sh = Nothing
End Sub
-------------------

Ciao,
E.

Maurizio Borrelli

unread,
Jan 17, 2013, 4:34:25 PM1/17/13
to
Il giorno giovedì 17 gennaio 2013 17:12:16 UTC+1, Davide Benedetti ha scritto:

Ciao Davide,
ho messo qui:
http://sdrv.ms/10Ct83s
il mio file. Ho dato anche una sistematina alla formattazione condizionale.
--
Ciao!
Maurizio

Maurizio Borrelli

unread,
Jan 17, 2013, 4:42:21 PM1/17/13
to
Il giorno giovedì 17 gennaio 2013 22:34:25 UTC+1, Maurizio Borrelli ha scritto:
> Il giorno giovedì 17 gennaio 2013 17:12:16 UTC+1, Davide Benedetti ha scritto:

Dimenticavo... Poi non ti sognare di mettere qualcosa d'altro in quel foglio a destra della tabella, mi raccomando! Comunque, se proprio proprio ti scappa di farlo, la soluzione c'e`. Il fatto e` che siamo partiti dal tuo Find di "Saldi finali" che, secondo me, non e` la strada migliore per definire l'intervallo di una tabella dati...
--
Ciao!
Maurizio

Davide Benedetti

unread,
Jan 18, 2013, 2:56:04 AM1/18/13
to
L'ho provato e sembra che funzioni!
Sei stato molto gentile e non preoccuparti: adesso ho raggiunto il mio obiettivo e non penso di fare altre modifiche!! :-)


Grazie anche a plinius ma purtroppo la modifica che mi avevi fatto fare non da i suoi frutti..

Grazie mille!

Davide

Davide Benedetti

unread,
Jan 18, 2013, 3:03:56 AM1/18/13
to
Un'ultima domanda... Se metto la protezione del foglio per evitare che i miei colleghi cancellino sbadatamente le formule, la macro per inserire le righe non funziona... E' una cosa semplice da sistemare?
Davide

Maurizio Borrelli

unread,
Jan 18, 2013, 4:08:00 AM1/18/13
to
Il giorno venerdì 18 gennaio 2013 09:03:56 UTC+1, Davide Benedetti ha scritto:
> Un'ultima domanda... Se metto la protezione del foglio per evitare che i miei colleghi cancellino sbadatamente le formule, la macro per inserire le righe non funziona... E' una cosa semplice da sistemare?

Ciao Davide,
senza andare a cercare troppo lontano... prova a consultare questo ng:
http://groups.google.com/forum/?fromgroups=#!searchin/microsoft.public.it.office.excel/macro$20~protetto$20protezione

--
Ciao!
Maurizio

Davide Benedetti

unread,
Jan 18, 2013, 4:29:05 AM1/18/13
to
Grazie ancora Maurizio!
Ciao
Davide

plinius

unread,
Jan 18, 2013, 8:00:50 AM1/18/13
to
Sicuro?

r

unread,
Jan 18, 2013, 8:35:23 AM1/18/13
to
Il giorno venerdì 18 gennaio 2013 14:00:50 UTC+1, plinius ha scritto:
> Sicuro?

funziona, funziona ...
:-)
r

r

unread,
Jan 18, 2013, 8:43:55 AM1/18/13
to
Il giorno venerdì 18 gennaio 2013 14:35:23 UTC+1, r ha scritto:
> Il giorno venerdì 18 gennaio 2013 14:00:50 UTC+1, plinius ha scritto: > Sicuro? funziona, funziona ... :-) r

Sub nuoverighe()
[1:5].Offset(Application.Match("Saldi finali", [A:A], 0) - 2).Insert
End Sub

:-)
r

r

unread,
Jan 18, 2013, 8:52:02 AM1/18/13
to
Il giorno venerdì 18 gennaio 2013 14:43:55 UTC+1, r ha scritto:
> Il giorno venerdì 18 gennaio 2013 14:35:23 UTC+1, r ha scritto: > Il giorno venerdì 18 gennaio 2013 14:00:50 UTC+1, plinius ha scritto: > Sicuro? funziona, funziona ... :-) r Sub nuoverighe() [1:5].Offset(Application.Match("Saldi finali", [A:A], 0) - 2).Insert End Sub :-) r

accc!
no ha ragione Davide ... Enrico prova ad aggiungere dei dati ...

ciau
r

r

unread,
Jan 18, 2013, 9:20:36 AM1/18/13
to
Il giorno venerdì 18 gennaio 2013 14:52:02 UTC+1, r ha scritto:
> Il giorno venerdì 18 gennaio 2013 14:43:55 UTC+1, r ha scritto: > Il giorno venerdì 18 gennaio 2013 14:35:23 UTC+1, r ha scritto: > Il giorno venerdì 18 gennaio 2013 14:00:50 UTC+1, plinius ha scritto: > Sicuro? funziona, funziona ... :-) r Sub nuoverighe() [1:5].Offset(Application.Match("Saldi finali", [A:A], 0) - 2).Insert End Sub :-) r accc! no ha ragione Davide ... Enrico prova ad aggiungere dei dati ... ciau r

oh solo per il bene di mpioe (si veda doc. plinius :-)

potrebbe modificare la formula con:
=SOMMA(SCARTO(E13;-1;):E$8)
con saldi finali nella riga 13

quindi:

Sub nuoverighe()
[1:5].Offset(Application.Match("Saldi finali", [A:A], 0) - 1).Insert
End Sub

saluti
r

plinius

unread,
Jan 18, 2013, 10:57:51 AM1/18/13
to
Il 18/01/2013 14:52, r ha scritto:
> Il giorno venerd� 18 gennaio 2013 14:43:55 UTC+1, r ha scritto:
>> Il giorno venerd� 18 gennaio 2013 14:35:23 UTC+1, r ha scritto: > Il giorno venerd� 18 gennaio 2013 14:00:50 UTC+1, plinius ha scritto: > Sicuro? funziona, funziona ... :-) r Sub nuoverighe() [1:5].Offset(Application.Match("Saldi finali", [A:A], 0) - 2).Insert End Sub :-) r
>
> accc!
> no ha ragione Davide ... Enrico prova ad aggiungere dei dati ...
>
> ciau
> r
>

Ho buttato il file e riscaricarlo e riconvertirlo per il mio 2000 � una
rottura.... mi diresti in due parole che succede aggiungendo dati?
Grazie,
Enrico

r

unread,
Jan 18, 2013, 11:04:16 AM1/18/13
to
Il giorno venerdì 18 gennaio 2013 16:57:51 UTC+1, plinius ha scritto:
Ho buttato il file e riscaricarlo e riconvertirlo per il mio 2000 � una rottura.... mi diresti in due parole che succede aggiungendo dati? Grazie, Enrico

che praticamente la riga subito sopra a saldi finale rimane li vicino ...

metti di avere queste righe:
01/01
02/01
03/01
04/01
05/01
saldo finale

dopo l'aggiunta ottieni:
01/01
02/01
03/01
04/01





05/01
saldo finale


ciao
r

plinius

unread,
Jan 18, 2013, 11:10:53 AM1/18/13
to
Il 18/01/2013 17:04, r ha scritto:
> Il giorno venerd� 18 gennaio 2013 16:57:51 UTC+1, plinius ha scritto:
> Ho buttato il file e riscaricarlo e riconvertirlo per il mio 2000 � una rottura.... mi diresti in due parole che succede aggiungendo dati? Grazie, Enrico
>
> che praticamente la riga subito sopra a saldi finale rimane li vicino ...
>
> metti di avere queste righe:
> 01/01
> 02/01
> 03/01
> 04/01
> 05/01
> saldo finale
>
> dopo l'aggiunta ottieni:
> 01/01
> 02/01
> 03/01
> 04/01
>
>
>
>
>
> 05/01
> saldo finale
>
>
> ciao
> r
>


Giusto! :-)
0 new messages