Gulp®
2013-01-15 11:46:33 UTC
Tombola.
Purtroppo ancora non con il punto esclamativo come da oggetto.
90 numeri casuali sono posti in una matrice Estraendi(1 to 90)
devo stamparli tutti, ma 5 per riga su 3 righe per cartella.
Le cartelle sono 6, tre a sinistra e tre a destra in un foglio A4
(Printer.Orientation = vbPRORLandscape). Totale righe 18, colonne 18.
Nelle colonne devo rispettare la posizione delle unità, prima decina,
seconda decina ecc.
Ho fatto così:
dim Casa(17,8)as boolean 'individua tutte le caselle disponibili
dim rg(17) As Integer ' per contare max 5 numeri per riga
For i = 1 To 90
Estratto = Estraendi(i)
For r = 0 To 17 'cicla le righe
If rg(r) = 5 Then GoTo prosegui
RSCol = TrovaCol(Estratto) 'per posizione matrice
sd = "sx"
If r > 8 Then sd = "dx"
Colonna = TrovaCol(Estratto, sd)'per stampa sx-dx
If Casa(r, RSCol) = False Then 'se non occupata
FindXY r, Colonna
Printer.CurrentX = theX
Printer.CurrentY = theY
Printer.Print Estratto
Casa(r, RSCol) = True 'occupa la casella
rg(r) = rg(r) + 1 'conta i numeri per riga
totStampati = totStampati + 1
Exit For
End If
prosegui:
Next r
Next i
Printer.EndDoc
TrovaCol individua una delle 9 colonne della matrice, quando presenta
l'opzione sd, aumenta di 9 il numero di colonna, determinando il
CurrentX per la stampa sulle cartelle a sinistra.
FindXY determina le coordinate di stampa.
Il codice non stampa tutti 90 i numeri,ma 89, oppure 88: evidentemente
in fondo al ciclo si ritrova con numeri che non trovano collocazione su
casella libera.
Qualche suggerimento?
Grazie in anticipo.
P.S. Normalmente non sarebbe corretto postare codice, ma un problema del
genere è difficilmente spiegabile altrimenti. Mi scuso.
Purtroppo ancora non con il punto esclamativo come da oggetto.
90 numeri casuali sono posti in una matrice Estraendi(1 to 90)
devo stamparli tutti, ma 5 per riga su 3 righe per cartella.
Le cartelle sono 6, tre a sinistra e tre a destra in un foglio A4
(Printer.Orientation = vbPRORLandscape). Totale righe 18, colonne 18.
Nelle colonne devo rispettare la posizione delle unità, prima decina,
seconda decina ecc.
Ho fatto così:
dim Casa(17,8)as boolean 'individua tutte le caselle disponibili
dim rg(17) As Integer ' per contare max 5 numeri per riga
For i = 1 To 90
Estratto = Estraendi(i)
For r = 0 To 17 'cicla le righe
If rg(r) = 5 Then GoTo prosegui
RSCol = TrovaCol(Estratto) 'per posizione matrice
sd = "sx"
If r > 8 Then sd = "dx"
Colonna = TrovaCol(Estratto, sd)'per stampa sx-dx
If Casa(r, RSCol) = False Then 'se non occupata
FindXY r, Colonna
Printer.CurrentX = theX
Printer.CurrentY = theY
Printer.Print Estratto
Casa(r, RSCol) = True 'occupa la casella
rg(r) = rg(r) + 1 'conta i numeri per riga
totStampati = totStampati + 1
Exit For
End If
prosegui:
Next r
Next i
Printer.EndDoc
TrovaCol individua una delle 9 colonne della matrice, quando presenta
l'opzione sd, aumenta di 9 il numero di colonna, determinando il
CurrentX per la stampa sulle cartelle a sinistra.
FindXY determina le coordinate di stampa.
Il codice non stampa tutti 90 i numeri,ma 89, oppure 88: evidentemente
in fondo al ciclo si ritrova con numeri che non trovano collocazione su
casella libera.
Qualche suggerimento?
Grazie in anticipo.
P.S. Normalmente non sarebbe corretto postare codice, ma un problema del
genere è difficilmente spiegabile altrimenti. Mi scuso.
--
Gulp®
Gulp®