Avrei fatto un progettino in cui legge da un file Excel il nome del file e' Brasile.xls con due fogli uno di nome Classifica,L' altro ProsTurno e fino qui' tutto bene ,carico il file xls in due flex uno per la classifica,L' altro ProsTurno,e qui' tutto ok,il problema nasce sul pulsante elabora messo sulla form principale
- Codice: Seleziona tutto
Option Explicit
'variabile oggetto che contiene il riferimento alla cartella di lavoro di Excel
Dim FileExcel As Workbook
'variabile oggetto che contiene il riferimento al foglio di lavoro di Excel
Dim FoglioExcel As Worksheet
Dim FoglioExcel1 As Worksheet
'variabile oggetto che contiene il riferimento alle celle del foglio di lavoro
'di Excel
Dim Squadra1ex(20) As Range
Dim Squadra2ex(20) As Range
Dim Squadra3ex(20) As Range
Dim Squadra4ex(20) As Range
Dim Squadra5ex(20) As Range
Dim Squadra6ex(20) As Range
Dim Squadra7ex(20) As Range
Dim Squadra8ex(20) As Range
Dim Squadra9ex(20) As Range
Dim Squadra10ex(20) As Range
Dim Squadra11ex(20) As Range
Dim Squadra12ex(20) As Range
Dim Squadra13ex(20) As Range
Dim Squadra14ex(20) As Range
Dim Squadra15ex(20) As Range
Dim Squadra16ex(20) As Range
Dim Squadra17ex(20) As Range
Dim Squadra18ex(20) As Range
Dim Squadra19ex(20) As Range
Dim Squadra20ex(20) As Range
Dim TuPex(10) As Range
Dim TuPex1(10) As Range
Dim TuPex2(10) As Range
Dim TuPex3(10) As Range
Dim TuPex4(10) As Range
Dim TuPex5(10) As Range
Dim TuPex6(10) As Range
Dim TuPex7(10) As Range
Dim TuPex8(10) As Range
Dim TuPex9(10) As Range
'variabile oggetto che contiene il riferimento (eventuale) ad un nome della
'zona del foglio di lavoro di Excel
Dim NomeZona As Name
Private Sub BRA_Click()
Dim x As Integer
Dim s As Integer
Dim j As Integer
MSFlexGrid1.Visible = True
MSFlexGrid2.Visible = True
MSFlexGrid1.Height = 5150
MSFlexGrid1.Width = 10150
MSFlexGrid2.Height = 2750
MSFlexGrid2.Width = 8280
MSFlexGrid1.Rows = 21
MSFlexGrid1.Cols = 20
MSFlexGrid2.Cols = 7
MSFlexGrid2.Rows = 11
MSFlexGrid1.TextMatrix(0, 0) = "Po"
MSFlexGrid1.TextMatrix(0, 1) = "Squadra"
MSFlexGrid1.TextMatrix(0, 2) = "Pu"
MSFlexGrid1.TextMatrix(0, 3) = "Gi"
MSFlexGrid1.TextMatrix(0, 4) = "Vi"
MSFlexGrid1.TextMatrix(0, 5) = "Nu"
MSFlexGrid1.TextMatrix(0, 6) = "Pe"
MSFlexGrid1.TextMatrix(0, 7) = "Rf"
MSFlexGrid1.TextMatrix(0, 8) = "Rs"
MSFlexGrid1.TextMatrix(0, 9) = "Vc"
MSFlexGrid1.TextMatrix(0, 10) = "Nc"
MSFlexGrid1.TextMatrix(0, 11) = "Pc"
MSFlexGrid1.TextMatrix(0, 12) = "Gc"
MSFlexGrid1.TextMatrix(0, 13) = "Sc"
MSFlexGrid1.TextMatrix(0, 14) = "Vf"
MSFlexGrid1.TextMatrix(0, 15) = "Nf"
MSFlexGrid1.TextMatrix(0, 16) = "Pf"
MSFlexGrid1.TextMatrix(0, 17) = "Gf"
MSFlexGrid1.TextMatrix(0, 18) = "Sf"
MSFlexGrid2.TextMatrix(0, 1) = "Data"
MSFlexGrid2.TextMatrix(0, 2) = "Squadra Casa"
MSFlexGrid2.TextMatrix(0, 3) = "Squadra Fuori"
MSFlexGrid2.TextMatrix(0, 4) = "Pic 1%"
MSFlexGrid2.TextMatrix(0, 5) = "Pic X%"
MSFlexGrid2.TextMatrix(0, 6) = "Pic 2%"
For s = 1 To 20
MSFlexGrid1.TextMatrix(s, 0) = s
Next
MSFlexGrid1.ColWidth(0) = 400
MSFlexGrid2.ColWidth(0) = 0
MSFlexGrid1.ColWidth(1) = 2000
MSFlexGrid1.ColWidth(2) = 450
MSFlexGrid1.ColWidth(3) = 450
MSFlexGrid1.ColWidth(4) = 450
MSFlexGrid1.ColWidth(5) = 450
MSFlexGrid1.ColWidth(6) = 450
MSFlexGrid1.ColWidth(7) = 450
MSFlexGrid1.ColWidth(8) = 450
MSFlexGrid1.ColWidth(9) = 450
MSFlexGrid1.ColWidth(10) = 450
MSFlexGrid1.ColWidth(11) = 450
MSFlexGrid1.ColWidth(12) = 450
MSFlexGrid1.ColWidth(13) = 450
MSFlexGrid1.ColWidth(14) = 450
MSFlexGrid1.ColWidth(15) = 450
MSFlexGrid1.ColWidth(16) = 450
MSFlexGrid1.ColWidth(17) = 450
MSFlexGrid1.ColWidth(18) = 450
MSFlexGrid1.ColWidth(19) = 0
MSFlexGrid2.ColWidth(1) = 1300
MSFlexGrid2.ColWidth(2) = 2000
MSFlexGrid2.ColWidth(3) = 2000
Dim Squadra1ex(20) As Range
Dim Squadra2ex(20) As Range
Dim Squadra3ex(20) As Range
Dim Squadra4ex(20) As Range
Dim Squadra5ex(20) As Range
Dim Squadra6ex(20) As Range
Dim Squadra7ex(20) As Range
Dim Squadra8ex(20) As Range
Dim Squadra9ex(20) As Range
Dim Squadra10ex(20) As Range
Dim Squadra11ex(20) As Range
Dim Squadra12ex(20) As Range
Dim Squadra13ex(20) As Range
Dim Squadra14ex(20) As Range
Dim Squadra15ex(20) As Range
Dim Squadra16ex(20) As Range
Dim Squadra17ex(20) As Range
Dim Squadra18ex(20) As Range
Dim Squadra19ex(20) As Range
Dim Squadra20ex(20) As Range
Dim TuPex(10) As Range
Dim TuPex1(10) As Range
Dim TuPex2(10) As Range
Dim TuPex3(10) As Range
Dim TuPex4(10) As Range
Dim TuPex5(10) As Range
Dim TuPex6(10) As Range
Dim TuPex7(10) As Range
Dim TuPex8(10) As Range
Dim TuPex9(10) As Range
If VerifyFile(App.Path & "\Brasile.xls") Then
'imposto la variabile oggetto FileExcel con il nome del file xls
Set FileExcel = Excel.Workbooks.Open(App.Path & "\Brasile.xls")
Else
MsgBox "Impossibile eseguire il programma" & _
vbCrLf & "Il file " & App.Path & "\Brasile.xls" & " non è stato trovato.", vbOKOnly
End
End If
On Error GoTo errore
'imposto la variabile oggetto FoglioExcel con il nome del foglio da leggere
Set FoglioExcel = FileExcel.Worksheets("Classifica")
Set FoglioExcel1 = FileExcel.Worksheets("ProsTurno")
'imposto la variabile oggetto Squadra1ex puntanto alla riga2,colonna1
For x = 1 To 19
Set Squadra1ex(x) = FoglioExcel.Cells(3, x)
Set Squadra2ex(x) = FoglioExcel.Cells(4, x)
Set Squadra3ex(x) = FoglioExcel.Cells(5, x)
Set Squadra4ex(x) = FoglioExcel.Cells(6, x)
Set Squadra5ex(x) = FoglioExcel.Cells(7, x)
Set Squadra6ex(x) = FoglioExcel.Cells(8, x)
Set Squadra7ex(x) = FoglioExcel.Cells(9, x)
Set Squadra8ex(x) = FoglioExcel.Cells(10, x)
Set Squadra9ex(x) = FoglioExcel.Cells(11, x)
Set Squadra10ex(x) = FoglioExcel.Cells(12, x)
Set Squadra11ex(x) = FoglioExcel.Cells(13, x)
Set Squadra12ex(x) = FoglioExcel.Cells(14, x)
Set Squadra13ex(x) = FoglioExcel.Cells(15, x)
Set Squadra14ex(x) = FoglioExcel.Cells(16, x)
Set Squadra15ex(x) = FoglioExcel.Cells(17, x)
Set Squadra16ex(x) = FoglioExcel.Cells(18, x)
Set Squadra17ex(x) = FoglioExcel.Cells(19, x)
Set Squadra18ex(x) = FoglioExcel.Cells(20, x)
Set Squadra19ex(x) = FoglioExcel.Cells(21, x)
Set Squadra20ex(x) = FoglioExcel.Cells(22, x)
MSFlexGrid1.TextMatrix(1, x) = Squadra1ex(x)
MSFlexGrid1.TextMatrix(2, x) = Squadra2ex(x)
MSFlexGrid1.TextMatrix(3, x) = Squadra3ex(x)
MSFlexGrid1.TextMatrix(4, x) = Squadra4ex(x)
MSFlexGrid1.TextMatrix(5, x) = Squadra5ex(x)
MSFlexGrid1.TextMatrix(6, x) = Squadra6ex(x)
MSFlexGrid1.TextMatrix(7, x) = Squadra7ex(x)
MSFlexGrid1.TextMatrix(8, x) = Squadra8ex(x)
MSFlexGrid1.TextMatrix(9, x) = Squadra9ex(x)
MSFlexGrid1.TextMatrix(10, x) = Squadra10ex(x)
MSFlexGrid1.TextMatrix(11, x) = Squadra11ex(x)
MSFlexGrid1.TextMatrix(12, x) = Squadra12ex(x)
MSFlexGrid1.TextMatrix(13, x) = Squadra13ex(x)
MSFlexGrid1.TextMatrix(14, x) = Squadra14ex(x)
MSFlexGrid1.TextMatrix(15, x) = Squadra15ex(x)
MSFlexGrid1.TextMatrix(16, x) = Squadra16ex(x)
MSFlexGrid1.TextMatrix(17, x) = Squadra17ex(x)
MSFlexGrid1.TextMatrix(18, x) = Squadra18ex(x)
MSFlexGrid1.TextMatrix(19, x) = Squadra19ex(x)
MSFlexGrid1.TextMatrix(20, x) = Squadra20ex(x)
Next
For j = 1 To 3
Set TuPex(j) = FoglioExcel1.Cells(3, j)
Set TuPex1(j) = FoglioExcel1.Cells(4, j)
Set TuPex2(j) = FoglioExcel1.Cells(5, j)
Set TuPex3(j) = FoglioExcel1.Cells(6, j)
Set TuPex4(j) = FoglioExcel1.Cells(7, j)
Set TuPex5(j) = FoglioExcel1.Cells(8, j)
Set TuPex6(j) = FoglioExcel1.Cells(9, j)
Set TuPex7(j) = FoglioExcel1.Cells(10, j)
Set TuPex8(j) = FoglioExcel1.Cells(11, j)
Set TuPex9(j) = FoglioExcel1.Cells(12, j)
MSFlexGrid2.TextMatrix(1, j) = TuPex(j)
MSFlexGrid2.TextMatrix(2, j) = TuPex1(j)
MSFlexGrid2.TextMatrix(3, j) = TuPex2(j)
MSFlexGrid2.TextMatrix(4, j) = TuPex3(j)
MSFlexGrid2.TextMatrix(5, j) = TuPex4(j)
MSFlexGrid2.TextMatrix(6, j) = TuPex5(j)
MSFlexGrid2.TextMatrix(7, j) = TuPex6(j)
MSFlexGrid2.TextMatrix(8, j) = TuPex7(j)
MSFlexGrid2.TextMatrix(9, j) = TuPex8(j)
MSFlexGrid2.TextMatrix(10, j) = TuPex9(j)
Next j
'libero ("scarico") le variabili
Set Squadra1ex(x) = Nothing
Set Squadra2ex(x) = Nothing
Set Squadra3ex(x) = Nothing
Set Squadra4ex(x) = Nothing
Set Squadra5ex(x) = Nothing
Set Squadra6ex(x) = Nothing
Set Squadra7ex(x) = Nothing
Set Squadra8ex(x) = Nothing
Set Squadra9ex(x) = Nothing
Set Squadra10ex(x) = Nothing
Set Squadra11ex(x) = Nothing
Set Squadra12ex(x) = Nothing
Set Squadra13ex(x) = Nothing
Set Squadra14ex(x) = Nothing
Set Squadra15ex(x) = Nothing
Set Squadra16ex(x) = Nothing
Set Squadra17ex(x) = Nothing
Set Squadra18ex(x) = Nothing
Set Squadra19ex(x) = Nothing
Set Squadra20ex(x) = Nothing
Set TuPex(j) = Nothing
Set TuPex1(j) = Nothing
Set FoglioExcel = Nothing
Set FoglioExcel1 = Nothing
'
Exit Sub
errore:
MsgBox "Errore " & Err.Number & vbCrLf & Err.Description
Set Squadra1ex(x) = Nothing
Set Squadra2ex(x) = Nothing
Set Squadra3ex(x) = Nothing
Set Squadra4ex(x) = Nothing
Set Squadra5ex(x) = Nothing
Set Squadra6ex(x) = Nothing
Set Squadra7ex(x) = Nothing
Set Squadra8ex(x) = Nothing
Set Squadra9ex(x) = Nothing
Set Squadra10ex(x) = Nothing
Set Squadra11ex(x) = Nothing
Set Squadra12ex(x) = Nothing
Set Squadra13ex(x) = Nothing
Set Squadra14ex(x) = Nothing
Set Squadra15ex(x) = Nothing
Set Squadra16ex(x) = Nothing
Set Squadra17ex(x) = Nothing
Set Squadra18ex(x) = Nothing
Set Squadra19ex(x) = Nothing
Set Squadra20ex(x) = Nothing
Set TuPex(j) = Nothing
Set TuPex1(j) = Nothing
Set FoglioExcel = Nothing
Set FoglioExcel1 = Nothing
FileExcel.Close
End Sub
Public Function VerifyFile(FileName As String)
On Error Resume Next
Open FileName For Input As #1
If Err Then
VerifyFile = False
Exit Function
End If
Close #1
VerifyFile = True
End Function
Private Sub cmdChiudi_Click()
Form_Unload (False)
End Sub
Private Sub Elabora_Click()
Dim vc(10), NC(10), SC(10), VF(10), NF(10), SF(10), p(3, 10), pgc, clc, a, z, b, d, e, ric, rifp, f, ricp, rif, p1
Dim i As Integer
Dim k As Integer
For k = 1 To 20
For i = 1 To 10
If MSFlexGrid2.TextMatrix(i, 2) = MSFlexGrid1.TextMatrix(k, 1) Then vc(i) = MSFlexGrid1.TextMatrix(k, 9)
If MSFlexGrid2.TextMatrix(i, 3) = MSFlexGrid1.TextMatrix(k, 1) Then vf(i) = MSFlexGrid1.TextMatrix(k, 14)
If MSFlexGrid2.TextMatrix(i, 2) = MSFlexGrid1.TextMatrix(k, 1) Then nc(i) = MSFlexGrid1.TextMatrix(k, 10)
If MSFlexGrid2.TextMatrix(i, 3) = MSFlexGrid1.TextMatrix(k, 1) Then nf(i) = MSFlexGrid1.TextMatrix(k, 15)
If MSFlexGrid2.TextMatrix(i, 2) = MSFlexGrid1.TextMatrix(k, 1) Then sc(i) = MSFlexGrid1.TextMatrix(k, 11)
If MSFlexGrid2.TextMatrix(i, 3) = MSFlexGrid1.TextMatrix(k, 1) Then sf(i) = MSFlexGrid1.TextMatrix(k, 16)
' vc(i) vittorie squadra casa (si trova in grid1 (k,9))
' nc(i) nulle squadra casa (si trova in grid1 (k,10))
' sc(i) perse squadra casa (si trova in grid1 (k,11))
'vf(i) vittorie squadra fuori (si trova in grid1 (k,14))
' nf(i) nulle squadra fuori (si trova in grid1 (k,15))
'' sf(i) perse squadra casa (si trova in grid1 (k,16))
next
next
'Da qui' calcolo del picchetto percentuale delle squadre prossimo turno
For i = 1 To 10
VC(i) = VC(i) + 1: NC(i) = NC(i) + 1: SC(i) = SC(i) + 1: VF(i) = VF(i) + 1: NF(i) = NF(i) + 1: SF(i) = SF(i) + 1
'VALORI TEAM CASA
pgc = VC(i) + NC(i) + SC(i)
clc = ((VC(i) * 3) + NC(i))
'1
a = clc / pgc
b = (VC(i) - SC(i)) / pgc
ric = a + b
If ric < 1 Then ric = 0.85
'X
d = ((pgc + pgc) - clc) / pgc
e = b / 2
f = NC(i) / pgc
ricp = d + e + f
If ricp < 1 Then ricp = 0.85
'VALORI TEAM FUORI
pgc = VF(i) + NF(i) + SF(i)
clc = ((VF(i) * 3) + NF(i))
'2
a = clc / pgc
b = (VF(i) - SF(i)) / pgc
rif = a + b
If rif < 1 Then rif = 0.85
'X
d = ((pgc + pgc) - clc) / pgc
e = b / 6
f = NF(i) / pgc
rifp = d + e + f
If rifp < 1 Then rifp = 0.85
'PICCH. %
p1 = ric + ricp + rif + rifp
p(1, i) = Int((ric / p1) * 100)
p(3, i) = Int((rif / p1) * 100)
p(2, i) = 100 - (p(1, i) + p(3, i))
'p(1,i) Picchetto Segno 1
'p(2,i) Picchetto Segno X
'p(3,i) Picchetto Segno 2
MSFlexGrid2.TextMatrix(i, 4) = p(1, i)
MSFlexGrid2.TextMatrix(i, 6) = p(3, i)
MSFlexGrid2.TextMatrix(i, 5) = p(2, i)
Next
End Sub
'alla chiusura del programma.......
Private Sub Form_Unload(Cancel As Integer)
FileExcel.Close (True) 'chiude Excel salvando le eventuali modifiche
'in alternativa è possibile usare la sintassi: FileExcel.Close
' in questo caso, se sono state apportate delle modifiche al file,verrà
' visualizzata una finestra che richiede la conferma al salvataggio
Set FileExcel = Nothing 'libero ("scarico") la variabile
End
End Sub
Il Problema Credo Che Si Trovi Qui'
- Codice: Seleziona tutto
If MSFlexGrid2.TextMatrix(i, 2) = MSFlexGrid1.TextMatrix(k, 1) Then vc(i) = MSFlexGrid1.TextMatrix(k, 9)
If MSFlexGrid2.TextMatrix(i, 3) = MSFlexGrid1.TextMatrix(k, 1) Then vf(i) = MSFlexGrid1.TextMatrix(k, 14)
If MSFlexGrid2.TextMatrix(i, 2) = MSFlexGrid1.TextMatrix(k, 1) Then nc(i) = MSFlexGrid1.TextMatrix(k, 10)
If MSFlexGrid2.TextMatrix(i, 3) = MSFlexGrid1.TextMatrix(k, 1) Then nf(i) = MSFlexGrid1.TextMatrix(k, 15)
If MSFlexGrid2.TextMatrix(i, 2) = MSFlexGrid1.TextMatrix(k, 1) Then sc(i) = MSFlexGrid1.TextMatrix(k, 11)
If MSFlexGrid2.TextMatrix(i, 3) = MSFlexGrid1.TextMatrix(k, 1) Then sf(i) = MSFlexGrid1.TextMatrix(k, 16)
Spero di essermi spiegato bene
Ringrazio per una Cortese Risposta
Saluti