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

Numerazione Progressiva

43 views
Skip to first unread message

Gianni

unread,
Feb 9, 2012, 6:44:01 AM2/9/12
to
Buona giornata a tutti.

Chiedo un ennesimo aiuto:
Ho questa codice in un foglio il quale mi inserisce un numero progressivo nella colonna A se nella colonna B inserisco in qualsiasi dato.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng1 As Range
Dim Rng2 As Range
Dim rCell As Range
Dim iVal As Long

Set Rng1 = Columns("B:B")
Set Rng2 = Intersect(Rng1, Target)

If Not Rng2 Is Nothing Then
iVal = Application.Max(Rng1.Offset(0, -1))
On Error GoTo XIT
Application.EnableEvents = False
For Each rCell In Rng2.Cells
With rCell
iVal = iVal + 1
If Not IsEmpty(.Value) Then
With .Offset(0, -1)
If IsEmpty(.Value) Then
.Value = iVal
.NumberFormat = "0"
End If
End With
End If
End With
Next rCell
End If
XIT:
Application.EnableEvents = True
End Sub

Se però elimino una o più righe non viene aggiornato la progressione numerica nella colonna A.
E' possibile modificare il seguente codice in modo che, se elimino una o più righe nella tabella, la colonna A la progressione numerica venga aggiornata?
Grazie per un eventuale aiuto
Ciao
Gianni

eliano

unread,
Feb 9, 2012, 9:01:09 AM2/9/12
to
Ciao Gianni.
Non ho provato la tua macro, ma, leggendola, ho la sensazione che la
progressione numerica sia rispettata.
Forse intendevi il recupero della numerazione progressiva persa
perche' utilizzata dal rekord cancellato ?
Eliano

plinius

unread,
Feb 9, 2012, 10:39:54 AM2/9/12
to

"Gianni" <palg...@libero.it> ha scritto nel messaggio
news:31161755.586.1328787841915.JavaMail.geo-discussion-forums@yqcr15...
***************************

La tua sub numera progressivamente i dati inseriti in colonna B, secondo
l'ordine di immissione.
Cosa dovrebbe succedere se dopo aver inserito 10 dati cancello il terzo
inserito?
Che quello che prima risultava 4° appaia ora come 3° e così via per gli
altri successivi?
Se è così, prova in questo modo:
-------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng1 As Range
Dim Rng2 As Range
Dim c1 As Range, c2 As Range
Dim iVal As Long

Set Rng1 = Columns("B:B")
Set Rng2 = Intersect(Rng1, Target)

If Not Rng2 Is Nothing Then
iVal = Application.Max(Rng1.Offset(0, -1))
On Error GoTo XIT
Application.EnableEvents = False
For Each c1 In Rng2.Cells
With c1
If Not IsEmpty(.Value) Then
With .Offset(0, -1)
If IsEmpty(.Value) Then
iVal = iVal + 1
.Value = iVal
.NumberFormat = "0"
End If
End With
Else
With .Offset(0, -1)
If Not IsEmpty(.Value) Then
iVal = .Value
.Value = ""
For Each c2 In Rng1.Offset(0, -1).Cells
If c2 > iVal Then c2 = c2 - 1
Next c2
End If
End With
End If
End With
Next c1
End If
XIT:
Application.EnableEvents = True
End Sub
--------------------

Ciao,
E.


Gianni

unread,
Feb 9, 2012, 11:29:40 AM2/9/12
to
Ciao eliano e plinius
Grazie per la risposta

> Forse intendevi il recupero della numerazione progressiva persa
perche' utilizzata dal rekord cancellato ?
Si... è quello che intendevo.

Plinius, ho provato il tuo codice, ho lo stesso problema:
Non recupera la numerazione progressiva persa
Grazie
Ciao
Ciao

plinius

unread,
Feb 9, 2012, 12:52:28 PM2/9/12
to

"Gianni" <palg...@libero.it> ha scritto nel messaggio
news:16592.441.1328804981029.JavaMail.geo-discussion-forums@vbat6...
*********************

Se hai questa numerazione: 4, 1, 2, 3, 6, 5
e cancelli il dato n. 3, la numerazione si aggiorna in:
3, 1, 2, 5, 4

Non è questo che volevi?


Mauro Gamberini

unread,
Feb 9, 2012, 1:05:35 PM2/9/12
to
On 9 Feb, 18:52, "plinius" <punto.linea...@LEVARElibero.it> wrote:
> "Gianni" <palgia...@libero.it> ha scritto nel messaggionews:16592.441.1328804981029.JavaMail.geo-discussion-forums@vbat6...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lRiga As Long
lRiga = Me.Range("A" & Me.Rows.Count).End(xlUp).Row
If Target.Column = 1 Then
Me.Range("B2").Value = 1
Me.Range("B2").AutoFill _
Destination:=Range("B2:B" & lRiga), _
Type:=xlFillSeries
End If
End Sub

Il resto viene da se...;-)

Mauro Gamberini

Gianni

unread,
Feb 9, 2012, 1:35:36 PM2/9/12
to
Ciao Plinius e ciao Mauro

Plinius

Mi spiego meglio .. spero...
Ho questa numerazione di riga 1, 2, 3, 4, 5, 6
se cancello la riga 3, 5,
mi deve riordinare le righe ancora con 1, 2, 3, 4

Mauro ho provato il tuo codice, funziona come desideravo,
ma se il tuo codice lo modifico così:
-------
-------
lRiga = Me.Range("B" & Me.Rows.Count).End(xlUp).Row
If Target.Column = 2 Then
Me.Range("A2").Value = 1
Me.Range("A2").AutoFill _
Destination:=Range("A2:A" & lRiga), Type:=xlFillSeries
------
------

Non funziona come desidero.
Grazie e buona serata
Gianni



plinius

unread,
Feb 9, 2012, 2:10:02 PM2/9/12
to

"Gianni" <palg...@libero.it> ha scritto nel messaggio
news:18681655.462.1328812536801.JavaMail.geo-discussion-forums@vbeu3...
*******************

Quello che non capisco è se la numerazione è crescente in base alla
posizione della riga o in base al momento di immissione (la tua sub fa
questa seconda cosa).

Se si trattasse dell'altra ipotesi basta una formula.
In A1:
=SE(B1<>"";CONTA.VALORI(B$1:B1);"")
da trascinare in basso.


Mauro Gamberini

unread,
Feb 9, 2012, 2:20:40 PM2/9/12
to
"Gianni" ha scritto nel messaggio
news:18681655.462.1328812536801.JavaMail.geo-discussion-forums@vbeu3...
*************************************

La mia era solo l'imbeccata per utilizzare AutoFill.

Definisci: non funziona come desidero,
che casomai capiamo.
Grazie.
--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/

Gianni

unread,
Feb 9, 2012, 2:55:12 PM2/9/12
to
Ciao Plinio
La tua formula fa quello che volevo.
Grazie
Gianni

Gianni

unread,
Feb 9, 2012, 2:56:58 PM2/9/12
to
Ciao Mauro.
Cerco di spiegarmi meglio…spero
Se uso il tuo codice, funziona bene se inserisco un dato in colonna A e nella colonna B
mi restituisce un numero progressivo,
Esempio:
Col A - Col B
aaa – 1
bbb - 2
ggg – 3
kkk - 4
ppp - 5
se poi elimino per esempio la riga 2, 3
Col A - Col B
aaa – 1
kkk - 2
ppp – 3

Io vorrei invece nella colonna A il numero progressivo se nella colonna B viene inserito un dato.
Esempio:
Col A - Col B
1 - aaa
2 - bbb
3 - ggg
4 - kkk
5 - ppp
se poi elimino per esempio la riga 2, 3, il risultato dovrebbe essere il seguente.
Col A - Col B
1 - aaa
2 - kkk
3 - ppp

Grazie e ciao
Gianni

eliano

unread,
Feb 9, 2012, 3:14:36 PM2/9/12
to
Mah, Gianni, dipende a cosa deve servire quelnumero progressivo.
Se fosse un identificatore di quel rekord, allora, essendo variabile,
ciccia,:-((
Se fosse perche' hai necessita' di conoscere il numero totale dei
rekord attivi, allora sprechi almeno una colonna.
Se invece..... ma prima di procedere con la possibile casistica....a
cosa ti serve quel progressivo variabile?? Grazie.
Eliano

Gianni

unread,
Feb 9, 2012, 3:43:44 PM2/9/12
to
Ciao eliano

Ho necessità di conoscere il n° totale dei rekord presenti.
spiego:
Inserisco dei nominativi con varie informazioni del soggetto nel foglio tramite un form.
Ogni nominativo ha una sua riga con le relative informazioni.
In questo elenco mi capita di eliminare uno o più righe e vorrei che nella colonna A si aggiornasse il numero progressivo.
Ciao e buona serata
Gianni




eliano

unread,
Feb 9, 2012, 5:17:25 PM2/9/12
to
Quindi il numero totale dei nominativi residui ed ogni nominativo ha
una sola riga?

Public Sub prova2()
Dim Urig As Long
Urig = Cells(Rows.Count, "A").End(xlUp).Row
MsgBox "Ultima riga della colonna A: " & Urig
End Sub

Cioe':Totale Nominativi = Urig meno righe di testata ?

Eliano
0 new messages