Option Explicit
Sub Main
Dim nEstrPerCalcFrq,Fine,nClasse,nFrzPerRt,bMostraAnalitico,bMostraRiepRit,bMostraProssimeUscite,bMostraGrafico
Fine = EstrazioneFin
nEstrPerCalcFrq = Int(InputBox("Estrazioni da analizzare",,104))
nFrzPerRt = Int(InputBox("Formazioni per ruota",,1))
nClasse = ScegliDaMenu("Classe Formazione",5)
If MsgBox("Mostrare Tab Analitico ?",vbQuestion + vbYesNo) = vbYes Then bMostraAnalitico = True
If MsgBox("Mostrare Riepilogo Ritardi?",vbQuestion + vbYesNo) = vbYes Then bMostraRiepRit = True
If MsgBox("Mostrare Prossime Uscite ?",vbQuestion + vbYesNo) = vbYes Then bMostraProssimeUscite = True
If MsgBox("Mostrare Grafico frequenza ?",vbQuestion + vbYesNo) = vbYes Then bMostraGrafico = True
Call Esegui(nEstrPerCalcFrq,Fine,nClasse,nFrzPerRt,bMostraAnalitico,bMostraRiepRit,bMostraProssimeUscite,bMostraGrafico)
End Sub
Sub Esegui(nEstrPerCalcFrq,Fine,nClasse,nFrzPerRt,bMostraAnalitico,bMostraRiepRit,bMostraProssimeUscite,bMostraGrafico)
Dim CollCinquine
ReDim aTabAnalitico(0)
If nClasse > 0 And nFrzPerRt > 0 And nEstrPerCalcFrq > 0 Then
Call ScriviInformazioni(nEstrPerCalcFrq , nClasse, nFrzPerRt, Fine)
Call AlimentaGrigliaEstr(aTabAnalitico,Fine)
Call CreaTabAnalitico(aTabAnalitico)
Call AlimentaCollCinquine(CollCinquine,aTabAnalitico,nFrzPerRt,nClasse)
Call EseguiStatistica(CollCinquine,nEstrPerCalcFrq,Fine,bMostraRiepRit,bMostraProssimeUscite,bMostraGrafico)
If bMostraAnalitico Then
Call CreaTabellone(aTabAnalitico,Fine)
End If
End If
End Sub
Sub ScriviInformazioni(nEstrPerCalcFrq,nClasse,nFrzPerRt,Fine)
Dim s
s = "La seguente statistica analizza per ogni ruota le " & nFrzPerRt
s = s & " formazioni composte da " & nClasse & " numeri" & vbCrLf
s = s & "dal ritardo piu alto che non si sono ancora sfaldate,"
s = s & " esaminando e fornendo i dati statistici per " & vbCrLf
s = s & "i numeri che le compongono." & vbCrLf
s = s & "Le formazioni vengono mostrate in ordine decrescente di ritardo." & vbCrLf
s = s & "All'interno della tabella statistica i numeri sono disposti ordinati per frequenza decrescente." & vbCrLf
Call Scrivi(String(150,"*"),True)
Call Scrivi(s,True)
Call Scrivi(String(150,"*"),True)
Call Scrivi
s = "Data di rilevamento Tabellone Analitico : " & GetInfoEstrazione(Fine)
Call Scrivi(s,True)
s = "Estrazioni esaminate per calcolo freqenza : " & nEstrPerCalcFrq
Call Scrivi(s,True)
s = "Ricerca formazioni di classe : " & nClasse
Call Scrivi(s,True)
Call Scrivi(String(150,"*"),True)
Call Scrivi
End Sub
Sub CreaTabellone(aTabAnalitico,Fine)
Dim k,i,r
ReDim av(57)
ReDim aColSpan(57)
ReDim aColori(57)
Dim idPrimaRiga,idEstr
Dim nColor
Call Messaggio("Output TabAnalitico in corso ...")
i = 2
aColori(1) = RGB(255,255,192)
aColori(2) = vbYellow
For r = 1 To 11
For k = 1 To 5
i = i + 1
If r Mod 2 = 0 Then
nColor = RGB(255,255,192)
Else
nColor = vbWhite
End If
aColori(i) = nColor
Next
Next
aColSpan(1) = 57
av(1) = "TABELLONE ANALITICO"
Call InitTabella(av,vbCyan,,6,,"Courier New",aColSpan)
av(1) = ""
av(2) = ""
i = 0
For k = 3 To 56 Step 5
i = i + 1
av(k) = NomeRuota(Iif(i = 11,12,i))
aColSpan(k) = 5
Next
aColSpan(1) = 2
Call AddRigaTabella(av,aColori,,,,"Courier New",aColSpan)
av(1) = " Data "
av(2) = " Rit "
i = 2
For r = 1 To 11
For k = 1 To 5
i = i + 1
av(i) = Format2(k) & "°"
Next
Next
Call AddRigaTabella(av,aColori,,,,"Courier New")
idPrimaRiga = GetIdPrimaRigaTabAna(aTabAnalitico)
For k = idPrimaRiga To UBound(aTabAnalitico)
idEstr = Fine -((UBound(aTabAnalitico) + 1) - k - 1)
av(1) = " " & DataEstrazione(idEstr) & " "
av(2) = UBound(aTabAnalitico) - k
For i = 1 To 55
If aTabAnalitico(k,i) <> 0 Then
av(i + 2) = Format2(aTabAnalitico(k,i))
Else
av(i + 2) = " "
End If
Next
Call AddRigaTabella(av,aColori,,,,"Courier New")
Next
Call CreaTabella
End Sub
Function GetIdPrimaRigaTabAna(aTabAnalitico)
Dim k,e
For k = 1 To UBound(aTabAnalitico)
For e = 1 To 55
If aTabAnalitico(k,e) <> 0 Then
GetIdPrimaRigaTabAna = k
Exit Function
End If
Next
Next
End Function
Function ScegliDaMenu(sTitolo,idSelDef)
Dim k
ReDim av(5)
For k = 1 To 5
av(k) = k
Next
k = ScegliOpzioneMenu(av,idSelDef,sTitolo)
If k > 0 Then
ScegliDaMenu = av(k)
End If
End Function
Sub EseguiStatistica(CollCinquine,nEstrPerCalcFrq,Fine,bMostraRiepRit,bMostraProssimeUscite,bMostraGrafico)
Dim clsE
Call OrdinaItemCollection(CollCinquine,"Ritardo")
For Each clsE In CollCinquine
Call clsE.CreaStatEstratti((Fine + 1) - nEstrPerCalcFrq,Fine,bMostraRiepRit,bMostraProssimeUscite,bMostraGrafico)
Next
End Sub
Sub AlimentaCollCinquine(CollCinquine,aTabAnalitico,QCinquinePerRuota,nClasse)
Dim r,k,nPosIn,nPosFi
Dim b,e,i
Dim nTrovate
Dim clsE
Dim nPresenti
Set CollCinquine = GetNewCollection
For r = 1 To 11
Call Messaggio("Ricerca cinquine su " & NomeRuota(Iif(r = 11,12,r)))
nPosIn =((r - 1) * 5) + 1
nPosFi =(nPosIn - 1) + 5
nTrovate = 0
For k = 1 To UBound(aTabAnalitico)
nPresenti = 0
For e = nPosIn To nPosFi
If aTabAnalitico(k,e) <> 0 Then
nPresenti = nPresenti + 1
End If
Next
If nPresenti = nClasse Then
i = 0
Set clsE = New clsEstrazione
clsE.Ruota = Iif(r = 11,12,r)
clsE.Ritardo = UBound(aTabAnalitico) - k
For e = nPosIn To nPosFi
i = i + 1
Call clsE.SetNum(i,aTabAnalitico(k,e))
Next
CollCinquine.Add clsE
nTrovate = nTrovate + 1
If nTrovate = QCinquinePerRuota Then Exit For
End If
Next
Call AvanzamentoElab(1,11,r)
Next
End Sub
Function AlimentaGrigliaEstr(aTabAnalitico,Fine)
Dim idEstr
Dim Inizio
Dim nTot
Dim iPos,iEst,r,e
Call Messaggio("Lettura estrazioni in corso")
Inizio = Fine - 220
If Inizio < 0 Then Inizio = 0
nTot =(Fine + 1) - Inizio
ReDim aTabAnalitico(nTot,55)
For idEstr = Inizio To Fine
iPos = 0
iEst = iEst + 1
For r = 1 To 12
If r <> 11 Then
For e = 1 To 5
iPos = iPos + 1
aTabAnalitico(iEst,iPos) = Estratto(idEstr,r,e)
Next
End If
Next
Call AvanzamentoElab(Inizio,Fine,idEstr)
Next
End Function
Sub CreaTabAnalitico(aTabAnalitico)
Dim k,j,e,ee,r
Dim iPos,nPosIn,nPosFi
For r = 1 To 11
Call Messaggio("Creo analitico per " & NomeRuota(Iif(r = 11,12,r)))
nPosIn =((r - 1) * 5) + 1
nPosFi =(nPosIn - 1) + 5
For k = 2 To UBound(aTabAnalitico)
For j = k - 1 To 1 Step - 1
For e = nPosIn To nPosFi
For ee = nPosIn To nPosFi
If aTabAnalitico(j,ee) = aTabAnalitico(k,e) Then
aTabAnalitico(j,ee) = 0
Exit For
End If
Next
Next
Next
Next
Call AvanzamentoElab(1,11,r)
Next
End Sub
Class clsEstrazione
Dim aNum(5)
Dim mRuota
Dim mRitardo
Sub SetNum(iPos,Num)
aNum(iPos) = Num
End Sub
Public Property Let Ruota(v)
mRuota = v
End Property
Public Property Let Ritardo(v)
mRitardo = v
End Property
Public Property Get Ritardo()
Ritardo = mRitardo
End Property
Sub NormalizzaArrayNumPerFrq(aNumPerFrq)
Dim k,j
For k = 1 To 5
If Int(aNumPerFrq(k,1)) = 0 Then
For j = k + 1 To 5
If Int(aNumPerFrq(j,1)) <> 0 Then
aNumPerFrq(k,1) = aNumPerFrq(j,1)
aNumPerFrq(k,2) = aNumPerFrq(j,2)
aNumPerFrq(j,1) = ""
aNumPerFrq(j,2) = ""
Exit For
End If
Next
End If
Next
End Sub
Sub CreaStatEstratti(Inizio,Fine,bMostraRiepRit,bMostraProssimeUscite,bMostraGrafico)
Dim nFrq
ReDim aRuote(1)
Dim k,j,i,iPos
aRuote(1) = mRuota
' frequenze
ReDim aN(1)
ReDim aNumPerFrq(5,2)
i = 0
For k = 1 To 5
If Int(aNum(k)) > 0 Then
i = i + 1
aN(1) = aNum(k)
Call StatisticaFormazione(aN,aRuote,1,0,0,0,nFrq,Inizio,Fine)
aNumPerFrq(i,1) = aN(1)
aNumPerFrq(i,2) = nFrq
End If
Next
Call OrdinaMatrice(aNumPerFrq,- 1,2)
Call NormalizzaArrayNumPerFrq(aNumPerFrq)
'========================================================00
' elenco ritardi
ReDim aValoriTmp(1000,16)
ReDim aValori(10,16)
i = 0
iPos = 2
For k = 1 To 5
If Int(aNumPerFrq(k,1)) > 0 Then
aN(1) = aNumPerFrq(k,1)
ReDim aRetRitardi(0)
ReDim aReIdEstr(0)
Call ElencoRitardi(aN,aRuote,1,1,Fine,aRetRitardi,aReIdEstr)
For j = 1 To aNumPerFrq(k,2) ' to nRitDaPrendere
If j <= UBound(aValoriTmp) Then
aValoriTmp(j,1) = j - 1
i = UBound(aRetRitardi) -(j - 1)
If i > 0 Then
aValoriTmp(j,iPos) = aRetRitardi(i)
aValoriTmp(j,iPos + 1) = GetDiffColpi(aRetRitardi,i)
aValoriTmp(j,iPos + 2) = GetPosSortita(aN(1),aReIdEstr(i) - aRetRitardi(i))
End If
End If
Next
iPos = iPos + 3
End If
Next
Call RiduciArrayValori(aValoriTmp,aValori)
Call CreaTabStatistica(aNumPerFrq,aValori,Fine,bMostraRiepRit,bMostraProssimeUscite)
If bMostraGrafico Then
Call GeneraGrafico(Fine)
End If
End Sub
Sub RiduciArrayValori(aValoriTmp,aValori)
Dim k,e
Dim b
Dim nTrovati
For k = 1 To UBound(aValoriTmp)
b = False
For e = 1 To UBound(aValoriTmp,2)
If Trim(aValoriTmp(k,e)) <> "" Then
b = True
Exit For
End If
Next
If b Then
nTrovati = nTrovati + 1
Else
Exit For
End If
Next
ReDim aValori(nTrovati,16)
For k = 1 To nTrovati
For e = 1 To 16
aValori(k,e) = aValoriTmp(k,e)
Next
Next
End Sub
Function GetPosSortita(N,idEstr)
Dim k
For k = 1 To 5
If Estratto(idEstr,mRuota,k) = N Then
GetPosSortita = k
Exit For
End If
Next
End Function
Function GetDiffColpi(aRitardi,j)
Dim r
If j > 1 Then
GetDiffColpi = aRitardi(j) - aRitardi(j - 1)
Else
GetDiffColpi = "-"
End If
End Function
Sub CreaTabStatistica(aN,aValori,Fine,bMostraRiepRit,bMostraProssimeUscite)
Dim k,j,i,p
Dim nRitMin,nRitMax
ReDim av(16)
ReDim aColSpan(16)
ReDim aColori(16)
ReDim aColoreFont(16)
Dim nColor
For k = 1 To 16
aColoreFont(k) = vbBlack
Next
For k = 4 To 16 Step 3
aColoreFont(k) = vbRed
Next
Call Scrivi(FormatSpace(NomeRuota(mRuota),112) & vbCrLf,True,,vbCyan)
Call Scrivi("Formazione : " & StringaNumeriFormazione)
Call Scrivi("Ritardo : " & mRitardo)
Call Scrivi
aColori(1) = vbYellow
For k = 2 To 14 Step 3
If k Mod 2 = 0 Then
nColor = vbWhite
Else
nColor = RGB(255,255,192)
End If
For j = k To(k + 2)
aColori(j) = nColor
Next
Next
' titolo prima riga contiene la ruota
av(1) = NomeRuota(mRuota)
aColSpan(1) = 16
For k = 2 To 16
aColSpan(k) = 0
Next
Call InitTabella(av,RGB(128,128,255),,6,vbWhite,"Courier New",aColSpan)
' Seconda riga Intestazione colonne
av(1) = ""
av(2) = "Num": av(4) = "Frq"
av(5) = "Num": av(7) = "Frq"
av(8) = "Num": av(10) = "Frq"
av(11) = "Num": av(13) = "Frq"
av(14) = "Num": av(16) = "Frq"
aColSpan(1) = 1
For k = 2 To 14 Step 3
aColSpan(k) = 2
aColSpan(k + 1) = 0
aColSpan(k + 2) = 1
Next
aColori(1) = vbBlack
Call AddRigaTabella(av,aColori,,,,,aColSpan)
' terza riga frequenza dei numeri
av(1) = ""
aColSpan(1) = 1
i = 0
For k = 2 To 14 Step 3
i = i + 1
av(k) = aN(i,1)
av(k + 1) = ""
av(k + 2) = aN(i,2)
Next
Call AddRigaTabella(av,aColori,,4,aColoreFont,,aColSpan)
' quarta riga intestazione valori di dettaglio
av(1) = "IdRitardo"
i = 0
For k = 2 To 14 Step 3
i = i + 1
av(k) = "Ritardo"
av(k + 1) = "DiffColpi"
av(k + 2) = "Posizione"
Next
Call AddRigaTabella(av,vbYellow)
' righe dei valori
ReDim aMediaRit(16)
ReDim aSommaDif(16)
ReDim aPosPiuRit(16)
aColori(1) = vbYellow
For k = 1 To UBound(aValori)
For j = 1 To 16
av(j) = aValori(k,j)
Next
For j = 2 To 14 Step 3
aMediaRit(j) = Int(aMediaRit(j)) + Int(av(j))
aSommaDif(j + 1) = Int(aSommaDif(j + 1)) + Int(av(j + 1))
Next
Call AddRigaTabella(av,aColori)
Next
Call CalcolaPosPiuRit(aValori,aPosPiuRit)
' quinta riga intestazione valori di dettaglio
av(1) = ""
i = 0
For k = 2 To 14 Step 3
i = i + 1
av(k) = "Media"
av(k + 1) = "Somma"
av(k + 2) = "Pos>Rit"
Next
Call AddRigaTabella(av,vbYellow)
i = 0
ReDim av(16)
For j = 2 To 14 Step 3
i = i + 1
av(j) = "<b>" & Round(Dividi(Int(aMediaRit(j)),Int(aN(i,2))),2) & "</b>"
If Int(aN(i,1)) > 0 Then
av(j + 1) = "<b>" & aSommaDif(j + 1) & "</b>"
av(j + 2) = "<b>" & aPosPiuRit(j + 2) & "</b>"
Else
av(j) = ""
End If
Next
Call AddRigaTabella(av,aColori)
ReDim av(16)
' righe di riepilogo
For k = 1 To UBound(aColSpan)
aColSpan(k) = 0
Next
aColSpan(1) = 16
If bMostraRiepRit Then
ReDim av(16)
' prima riga titolo
av(1) = "RIEPILOGO RITARDI"
Call AddRigaTabella(av,vbYellow,,,,,aColSpan)
' seconda riga intestazione col
av(1) = "Fascia Rit."
i = 0
ReDim aColori(16)
aColori(1) = vbYellow
For k = 1 To 5
i =((k - 1) * 3) + 2
av(i) = "Da Rit"
av(i + 1) = "A Rit"
av(i + 2) = "Quantità"
aColori(i) = RGB(223,223,223)
aColori(i + 1) = RGB(223,223,223)
aColori(i + 2) = vbWhite
Next
Call AddRigaTabella(av,vbYellow)
' righe dei valori
nRitMin = - 1
ReDim av(16)
Do While nRitMax < 220
nRitMin = nRitMin + 1
nRitMax =(nRitMin - 1) + 18
av(1) = av(1) + 1
For k = 1 To 5
If aN(k,1) > 0 Then
i =((k - 1) * 3) + 2
av(i) = nRitMin
av(i + 1) = nRitMax
av(i + 2) = CalcolaPresNellaFasciaRit(nRitMin,nRitMax,i,aValori)
End If
Next
nRitMin = nRitMax
Call AddRigaTabella(av,aColori)
Loop
End If
ReDim av(16)
' prima riga titolo
av(1) = "RIEPILOGO POSIZIONI"
Call AddRigaTabella(av,vbYellow,,,,,aColSpan)
' seconda riga intestazione col
ReDim aColSpan(16)
av(1) = "Posizione"
i = 0
aColSpan(1) = 1
For k = 1 To 5
i =((k - 1) * 3) + 2
aColSpan(i) = 3
av(i) = "Presenze"
av(i + 1) = ""
av(i + 2) = ""
Next
Call AddRigaTabella(av,vbYellow,,,,,aColSpan)
ReDim av(16)
' righe dei valori
ReDim aColori(16)
aColori(1) = vbYellow
For p = 1 To 5
av(1) = p & "°"
For k = 1 To 5
i =((k - 1) * 3) + 2
aColori(i) = vbWhite
aColori(i + 1) = vbWhite
aColori(i + 2) = vbWhite
If aN(k,1) > 0 Then
av(i) = CalcolaPresNellaPos(p,i + 2,aValori)
av(i + 1) = ""
av(i + 2) = ""
End If
Next
Call AddRigaTabella(av,aColori,,,,,aColSpan)
Next
ReDim av(16)
If bMostraProssimeUscite Then
' prossima uscita
' prima riga titolo
ReDim aColSpan(16)
aColSpan(1) = 16
av(1) = "USCITE SUCCESSIVE ALL'ULTIMA ESTRAZIONE ANALIZZATA "
Call AddRigaTabella(av,vbYellow,,,,,aColSpan)
' seconda riga
aColSpan(1) = 1
ReDim av(16)
av(1) = "Uscita"
For k = 1 To 5
i =((k - 1) * 3) + 2
aColSpan(i) = 2
aColSpan(i + 1) = 0
aColSpan(i + 2) = 1
av(i) = "Colpi"
av(i + 1) = ""
av(i + 2) = "Pos"
Next
Call AddRigaTabella(av,vbYellow,,,,,aColSpan)
' prossime 3 uscite
ReDim av(16)
ReDim aProssimeUscite(5,3,1)
Call AlimentaArrayProssimeUscite(aN,aProssimeUscite,Fine,3)
For p = 1 To 3
av(1) = p
For k = 1 To 5
i =((k - 1) * 3) + 2
If aN(k,1) > 0 Then
av(i) = aProssimeUscite(k,p,0)
av(i + 1) = ""
av(i + 2) = aProssimeUscite(k,p,1)
End If
Next
Call AddRigaTabella(av,aColori,,,,,aColSpan)
Next
End If
Call CreaTabella
End Sub
Sub CalcolaPosPiuRit(aValori,aPosPiuRit)
Dim k,j
For k = 1 To UBound(aValori)
For j = 2 To 14 Step 3
aPosPiuRit(j + 2) = GetPosPiuRit(aValori,j + 2)
Next
Next
End Sub
Function GetPosPiuRit(aValori,j)
Dim k
Dim p
Dim s
ReDim aRitPos(5,2)
For p = 1 To 5
For k = 1 To UBound(aValori)
If aValori(k,j) = p Then
aRitPos(p,1) = Int(aRitPos(p,1))
Exit For
Else
aRitPos(p,1) = p
aRitPos(p,2) = Int(aRitPos(p,2)) + 1
End If
Next
Next
Call OrdinaMatrice(aRitPos,- 1,2)
's = ""
p = 1
ReDim aP(5)
Do While aRitPos(p,2) = aRitPos(1,2)
' s = s & RitPos(p, 1) & "/"
aP(p) = aRitPos(p,1)
p = p + 1
If p > 5 Then Exit Do
Loop
ReDim Preserve aP(p - 1)
Call OrdinaMatrice(aP,1)
s = ""
For k = 1 To UBound(aP)
s = s & aP(k) & "/"
Next
s = Left(s,Len(s) - 1)
GetPosPiuRit = s
End Function
Sub AlimentaArrayProssimeUscite(aN,aProssimeUscite,Fine,nQuscite)
Dim k,p,e,idEstr,nUscite,nColpi
Dim nEstrTot
nEstrTot = EstrazioniArchivio
For k = 1 To 5
nUscite = 0
nColpi = 0
If aN(k,1) <> 0 Then
For idEstr = Fine + 1 To nEstrTot
nColpi = nColpi + 1
For e = 1 To 5
If Estratto(idEstr,mRuota,e) = aN(k,1) Then
nUscite = nUscite + 1
aProssimeUscite(k,nUscite,0) = nColpi
aProssimeUscite(k,nUscite,1) = e
Exit For
End If
Next
If nUscite = nQuscite Then Exit For
Next
End If
Next
End Sub
Function CalcolaPresNellaPos(pos,i,aValori)
Dim k,p
p = 0
For k = 1 To UBound(aValori)
If aValori(k,i) = pos Then
p = p + 1
End If
Next
CalcolaPresNellaPos = p
End Function
Function CalcolaPresNellaFasciaRit(nRitMin,nRitMax,i,aValori)
Dim k,p
p = 0
For k = 1 To UBound(aValori)
If aValori(k,i) >= nRitMin And aValori(k,i) <= nRitMax Then
p = p + 1
End If
Next
CalcolaPresNellaFasciaRit = p
End Function
Function StringaNumeriFormazione()
Dim k,s
For k = 1 To 5
s = s & Iif(aNum(k) <> 0,aNum(k),"..") & " "
Next
StringaNumeriFormazione = "[" & s & "]"
End Function
Sub CalcolaPresenzeNeiCicli(Num,Fine,aPresenze,nQCicli)
Dim k,i
Dim nInizio
ReDim aN(1)
ReDim aRt(1)
Const cLenCiclo = 18
ReDim aPresenzeTmp(nQCicli)
aRt(1) = mRuota
nInizio = Fine + 1
i = 0
Do While nInizio > 1
aN(1) = Num
i = i + 1
nInizio = nInizio - cLenCiclo
If nInizio < 0 Then nInizio = 1
aPresenzeTmp(i) = SerieFreq(nInizio,(nInizio - 1) + cLenCiclo,aN,aRt,1)
If i = nQCicli Then Exit Do
Loop
ReDim aPresenze(nQCicli)
For k = 1 To i
aPresenze((i + 1) - k) = aPresenzeTmp(k)
Next
End Sub
Sub GeneraGrafico(Fine)
Dim k,j
Const cQCicli = 10
ReDim aColori(5)
aColori(1) = vbBlue
aColori(2) = vbCyan
aColori(3) = vbRed
aColori(4) = vbMagenta
aColori(5) = vbGreen
Call PreparaGrafico("Grafico frequenza per gli ultimi " & cQCicli & " cicli da 18",0,cQCicli,0,10,1,1)
For k = 1 To 5
If aNum(k) <> 0 Then
ReDim aPres(0)
Call CalcolaPresenzeNeiCicli(aNum(k),Fine,aPres,cQCicli)
ReDim av(cQCicli,2)
For j = 1 To cQCicli
av(j,1) = j
av(j,2) = aPres(j)
Next
Call DisegnaLineaGrafico(av,aColori(k),"Numero " & aNum(k))
End If
Next
' scrive grafico nell'output
Call InserisciGrafico
End Sub
End Class