Nemok
27-10-2009, 15:26
Salve a tutti, sto lavorando un paio di macro per automatizzare l'elaborazione di report per lavoro.
Fondamentalmente nel report è presente una colonna contentente un elenco ordinato di codici contabili (con ripetizioni), e vorrei lavorare proprio su questa colonna per far si che dopo l'elaborazione il file risulti come nel seguente esempio:
- PRIMA:
1000
1000
1020
1025
1025
1025
- DOPO:
1000
1000
[riga vuota]
1020
[riga vuota]
1025
1025
1025
Il codice l'ho già scritto, ed è qualcosa del tipo.
iRiga = 1
iNumRigheVuote = 0
iColCC = 3 'indice della colonna contenente il codice contabile
Rows(iRiga).Select
sCodiceContabile = Cells(iRiga, iColCC).Value 'Upper case della ragione sociale (per evitare problemi nei confronti tra stringhe)
While iNumRigheVuote < 4
While Cells(ActiveCell.Row, iColCC) = sCodiceContabile
iNumRigheVuote = 0
iRiga = iRiga + 1
'Cells(iRiga, iColCC).Select
Rows(iRiga).Select
Wend
If Cells(iRiga, iColCC).Value <> "" Then
sCodiceContabile= Cells(iRiga, iColCC).Value
End If
Selection.Insert Shift:=xlDown
iRiga = iRiga + 1
Rows(iRiga).Select
iNumRigheVuote = iNumRigheVuote + 1
Wend
'Fine While iNumRigheVuote < 4
Tutto funziona, se non fosse che nel momento in cui modifica manualmente un codice contabile prima dell'elaborazione (magari per correggerlo), il codice modificato fa sballare i confronti tra stringhe. Tra l'altro se effettuo nuovamente l'ordinamento della colonna (funzione a->z di excel) la cella modificata va alla prima riga, ovvero perde la propria posizione. Ho provato anche a modificare le proprietà della colonna (formato celle), impostandola come "testo", o come "Generico", ma l'esito è sempre lo stesso, e la macro non raggruppa correttamente dunque...
Qualche suggerimento in merito?
Fondamentalmente nel report è presente una colonna contentente un elenco ordinato di codici contabili (con ripetizioni), e vorrei lavorare proprio su questa colonna per far si che dopo l'elaborazione il file risulti come nel seguente esempio:
- PRIMA:
1000
1000
1020
1025
1025
1025
- DOPO:
1000
1000
[riga vuota]
1020
[riga vuota]
1025
1025
1025
Il codice l'ho già scritto, ed è qualcosa del tipo.
iRiga = 1
iNumRigheVuote = 0
iColCC = 3 'indice della colonna contenente il codice contabile
Rows(iRiga).Select
sCodiceContabile = Cells(iRiga, iColCC).Value 'Upper case della ragione sociale (per evitare problemi nei confronti tra stringhe)
While iNumRigheVuote < 4
While Cells(ActiveCell.Row, iColCC) = sCodiceContabile
iNumRigheVuote = 0
iRiga = iRiga + 1
'Cells(iRiga, iColCC).Select
Rows(iRiga).Select
Wend
If Cells(iRiga, iColCC).Value <> "" Then
sCodiceContabile= Cells(iRiga, iColCC).Value
End If
Selection.Insert Shift:=xlDown
iRiga = iRiga + 1
Rows(iRiga).Select
iNumRigheVuote = iNumRigheVuote + 1
Wend
'Fine While iNumRigheVuote < 4
Tutto funziona, se non fosse che nel momento in cui modifica manualmente un codice contabile prima dell'elaborazione (magari per correggerlo), il codice modificato fa sballare i confronti tra stringhe. Tra l'altro se effettuo nuovamente l'ordinamento della colonna (funzione a->z di excel) la cella modificata va alla prima riga, ovvero perde la propria posizione. Ho provato anche a modificare le proprietà della colonna (formato celle), impostandola come "testo", o come "Generico", ma l'esito è sempre lo stesso, e la macro non raggruppa correttamente dunque...
Qualche suggerimento in merito?