PDA

View Full Version : Routine di visual basic excel 2002


beltazhor
09-11-2009, 08:26
Salve a tutti. Sono nuovo del forum (come utilizzatore ma non come frequentatore) e vorrei sottoporre a qualche esperto di voi (es.: MarcoGG) un mio problema.
Ho un foglio di lavoro Excel 2002 così composto

Colonna A Colonna B Colonna C Colonna D Colonna E Colonna F
Nome Cognome via Indirizzo1 Indirizzo 2 Campo chiave *

Le righe ovviamente sono parecchie (alcune centinaia) e il campo chiave è dato dalle sigle del campo Nome e Cognome (concatena(stringa.estrai(sinistra(colA;1);stringa.estrai(sinistraColB;1).
In pratica la routine deve scorrere le celle della colonna F Campo Chiave.
Ogni qual volta le celle di F sono uguali consecutivamente 5 volte, deve copiare e incollare i dati del range A1:Exx (dove xx è l'ultima cella che soddisfa il controllo) in un foglio di lavoro che chiamerò foglio 1, in cui sono presenti 5 layout di etichetta vuoti e predefiniti.
Ogni volta che l'ultima cella analizzata di F è diversa dalla precedente, dovrà copiare e incollare i dati in un altro foglio che chiamerò foglio 2 con altri 5 tipi diversi di etichette, e così via alternativamente. Infine se l'intervallo di celle uguali è inferiore a 5 dovrà copiare solo le il range che soddisferà il controllo (es.: 3 righe) nel foglio etichette lasciando vuote le altre in eccedenza.
Mi spiego

Riga Colonna F
1 AA
2 AA
3 AA
4 AA
5 AA
6 AB
7 AB
8 AC

Le celle da riga 1 a 5 sono uguali quindi copia e incolla da 1 a 5 su foglio 1
Le righe da 6 a 7 sono uguali ma diverse dalla riga 5 quindi copia e incolla da 6 a 7 sul foglio 2 e lascia vuote 3 etichette
La riga 8 è diversa dalla 7 e quindi copia e incolla su foglio 1 e lascia vuote 4 etichette
e così via. I fogli 1 e 2 vanno usati alternativamente, una volta l'uno una volta l'altro.
AIUTOOOOOOO!!!! :mc: :muro:
Ho provato con select case ma finora ciccia!
Vi prego aiutatemi!

beltazhor
09-11-2009, 10:19
Allora, mi sono stupito di mé stesso, ma devo dire che alla fine ho risolto al 75%.
La routine che riesce a controllare il campo chiave funziona se elimino man mano le righe interessate dopo il loop.
La routine è la seguente (per altro una kazzata):D :

Sub Start()

§col = 38
§rigap = 2
Cells(§rigap, §col).Select
§rigas = §rigap + 1


i = 1

If Cells(§rigap, §col) = "" Then GoTo Fine
Do While Cells(§rigap, 38).Value = Cells(§rigas, 38).Value And §rigas < 7
§rigap = §rigap + 1
§rigas = §rigas + 1
Cells(§rigas, 38).Select
i = i + 1

Loop

Select Case i

Case 5
Rows("2:6").Select
Selection.Delete Shift:=xlUp
Case 4
Rows("2:5").Select
Selection.Delete Shift:=xlUp
Case 3
Rows("2:4").Select
Selection.Delete Shift:=xlUp
Case 2
Rows("2:3").Select
Selection.Delete Shift:=xlUp
Case 1
Rows("2:2").Select
Selection.Delete Shift:=xlUp

Fine:
End

End Select

End Sub

Adesso però mi sono arenato di nuovo su come dire al programma di usare una volta un foglio una volta un altro per il layout di stampa :cry: . Accettasi consigli e scorciatoie.
Moderatori e senior member fatevi avanti!