05/03 21:19
maurizio74
Ciao Carlo,
intanto grazie per la risposta, ti allego il file zip excel nel quale tutto funge corrrettamente.
in excel il calcolo enigmistico è completo con tutte le celle, mentre quello che ho postato in vb6 l'avevo ridotto per convenienza.
ma alla fine vorrei con vb6 la stessa cosa che avviene in excel.
ho provato in molti modi ma non sono riuscito a far fare sti benedetti scambi dei textbox così come avviene in excel.
vedi un po' se hai qualche idea...
Grazie
aaa
06/03 7:35
Carlo
Con l'exel tutto chiaro.
Il tuo programma esegue correttamente le permutazioni, solo che non scrivi i risultati sulle textbox
Per procedere alla conversione excel -> VB6 ti consiglio di posizionare le textbox nominandole in modo che identifichino le celle del foglio excel, per esempio le textbox che contengono i valori nel vettore:
TextO1
TextO2
TextO3
TextO4
TextO5
quelle in riga 4
TextC4
TextD4
TextF4
TextI4
TextJ4
ecc ecc
posizionale nel form tutte, questo ti agevolerà quando copierai le formule dal foglio excel
io l'ho fatto ora, ho copiato il codice VBA senza modifiche ho scritto tutta la funzione
risultato, te ne faccio vedere un pezzo così capisci meglio:
Function risultato(vettore()) As Boolean
' riempimento Text (celle)
TextO1 = vettore(1)
TextO2 = vettore(2)
TextO3 = vettore(3)
TextO4 = vettore(4)
TextO5 = vettore(5)
' riga 4
TextC4 = TextO1
TextD4 = TextO2
TextF4 = TextO3
TextI4 = TextO1
TextJ4 = TextO4
' riga 7
TextD7 = TextO2
TextF7 = TextO4
TextJ7 = TextO3
'riga10
TextD10 = TextO3
TextF10 = TextO1
TextJ10 = TextO5
' verifica
Dim value As Integer ' conterrà la somma delle uguaglianze
' riga 14
TextD14 = TextC4 & TextD4
TextF14 = TextF4
TextH14 = TextI4 & TextJ4
If CInt(TextD14) - CInt(TextF14) - CInt(TextH14) = 0 Then TextJ14 = "VERO": value = value + 1 Else TextJ14 = "FALSO"
e il programma funziona, in allegato l'eseguibile (uguale a quello che fa l'excel, In VB6 sarebbe scritto in modo diverso, per esempio con i calcoli sulle variabili e poi trasferiti a matrici di textbox).
Poi bisogna fare una modifica per l'uscita quando le uguaglianze sono 6, in vb6
end chiude il programma non vedresti i risultati.
Prova con tutto uguale all'excel, senza scorciatoie con meno valori o caselle.
Ultima modifica effettuata da Carlo 06/03 7:42
in programmazione tutto è permesso
06/03 14:54
maurizio74
Ciao Carlo,
intanto grazie.... 6 stato molto gentile ti allego il progetto exe fatto seguendo i tutoi consigli
solo che mi sono arenato per convertire queste 3 righe in vb6 al fine di far girare tutto.
trasposto = Application.WorksheetFunction.Transpose(vettore)
Worksheets("3"
.Range("O1:O5"
.Value = trasposto
If Worksheets("3"
.Range("J20"
.Value = 6 Then
ho provato in parecchi modi ma non riesco proprio,
sono un vecchio amante del vb6 ed ho sempre fatto da autodidatta e con un po' di aiuto di voi esperti ed eccomi qui...
aiutooooo
Grazie
Ultima modifica effettuata da maurizio74 06/03 15:13
aaa
06/03 17:45
Carlo
Postato originariamente da maurizio74:
trasposto = Application.WorksheetFunction.Transpose(vettore)
Worksheets("3"
.Range("O1:O5"
.Value = trasposto
If Worksheets("3"
.Range("J20"
.Value = 6 Then
trasposto = Application.WorksheetFunction.Transpose(vettore), questa riga VBA serve per traslare le celle allineate su una riga in celle allineate su una colonna. Nel nuovo programma VB6 inutile, come è inutile la nuova matrice
trasposto, va benissimo la matrice
vettore così com'è.
Worksheets("3"
.Range("O1:O5"
.Value = trasposto, questa riga VBA copia i valori contenuti nella matrice
trasposto, nel foglio di nome "3" dalla cella O1 alla cella O5, in VB6 lo puoi fare riempiendo le text corrispondenti in sequenza, come ti avevo già mostrato all'inizio della funzione :
risultato(vettore())
' riempimento Text (celle)
TextO1 = vettore(1)
TextO2 = vettore(2)
TextO3 = vettore(3)
TextO4 = vettore(4)
TextO5 = vettore(5)
If Worksheets("3"
.Range("J20"
.Value = 6 Then, questa riga VBA legge il valore contenuto nella cella J20 posizionata sul foglio di nome "3" e se contiene il valore 6....
Se hai nominato le text come consigliato la riga diventa:
If TextJ20 = 6 Then
Dai, quasi ci sei.
Ultima modifica effettuata da Carlo 06/03 18:58
in programmazione tutto è permesso
06/03 19:05
maurizio74
Ciao Carlo,
avevo già provato così togliendo queste righe
trasposto = Application.WorksheetFunction.Transpose(vettore)
Worksheets("3"
.Range("O1:O5"
.Value = trasposto
If Worksheets("3"
.Range("J20"
.Value = 6 Then
e mettendo solo queste
If TextJ20 = 6 Then
risultato = True
Else
risultato = False
End If
dopo la riga dellle uguaglianze.
ma mi da errore su questa riga If TextJ20 = 6 Then
bohhhhh
Ultima modifica effettuata da maurizio74 06/03 19:07
aaa
06/03 19:08
maurizio74
in sostanza tutta la function è così strutturata:
Function risultato(vettore()) As Boolean
TextO1 = vettore(1)
TextO2 = vettore(2)
TextO3 = vettore(3)
TextO4 = vettore(4)
TextO5 = vettore(5)
' riga 4
TextC4 = TextO1
TextD4 = TextO2
TextF4 = TextO3
TextI4 = TextO1
TextJ4 = TextO4
' riga 7
TextD7 = TextO2
TextF7 = TextO4
TextJ7 = TextO3
'riga10
TextD10 = TextO3
TextF10 = TextO1
TextJ10 = TextO5
' verifica
Dim value As Integer ' conterrà la somma delle uguaglianze
' riga 14
TextD14 = TextC4 & TextD4
TextF14 = TextF4
TextH14 = TextI4 & TextJ4
If CInt(TextD14) - CInt(TextF14) - CInt(TextH14) = 0 Then TextJ14 = "VERO": value = value + 1 Else TextJ14 = "FALSO"
TextD15 = TextD7
TextF15 = TextF7
TextH15 = TextJ7
If CInt(TextD15) - CInt(TextF15) - CInt(TextH15) = 0 Then TextJ15 = "VERO": value = value + 1 Else TextJ15 = "FALSO"
TextD16 = TextD10
TextF16 = TextF10
TextH16 = TextJ10
If CInt(TextD16) + CInt(TextF16) - CInt(TextH16) = 0 Then TextJ16 = "VERO": value = value + 1 Else TextJ16 = "FALSO"
TextD17 = TextC4 & TextD4
TextF17 = TextD7
TextH17 = TextD10
If CInt(TextD17) - (CInt(TextF17) * CInt(TextH17)) = 0 Then TextJ17 = "VERO": value = value + 1 Else TextJ17 = "FALSO"
TextD18 = TextF4
TextF18 = TextF7
TextH18 = TextF10
If CInt(TextD18) - CInt(TextF18) - CInt(TextH18) = 0 Then TextJ18 = "VERO": value = value + 1 Else TextJ18 = "FALSO"
TextD19 = TextI4 & TextJ4
TextF19 = TextJ7
TextH19 = TextJ10
If CInt(TextD19) - (CInt(TextF19) * CInt(TextH19)) = 0 Then TextJ19 = "VERO": value = value + 1 Else TextJ19 = "FALSO"
If TextJ20 = 6 Then
risultato = True
Else
risultato = False
End If
End Function
aaa
06/03 20:41
Carlo
Postato originariamente da maurizio74:
in sostanza tutta la function è così strutturata:
Function risultato(vettore()) As Boolean
' riempimento Text (celle)
TextO1 = vettore(1)
TextO2 = vettore(2)
TextO3 = vettore(3)
TextO4 = vettore(4)
TextO5 = vettore(5)
' riga 4
TextC4 = TextO1
TextD4 = TextO2
TextF4 = TextO3
TextI4 = TextO1
TextJ4 = TextO4
' riga 7
TextD7 = TextO2
TextF7 = TextO4
TextJ7 = TextO3
'riga10
TextD10 = TextO3
TextF10 = TextO1
TextJ10 = TextO5
' verifica
Dim value As Integer ' conterrà la somma delle uguaglianze
' riga 14
TextD14 = TextC4 & TextD4
TextF14 = TextF4
TextH14 = TextI4 & TextJ4
If CInt(TextD14) - CInt(TextF14) - CInt(TextH14) = 0 Then TextJ14 = "VERO": value = value + 1 Else TextJ14 = "FALSO"
' riga 15
TextD15 = TextD7
TextF15 = TextF7
TextH15 = TextJ7
If CInt(TextD15) - CInt(TextF15) - CInt(TextH15) = 0 Then TextJ15 = "VERO": value = value + 1 Else TextJ15 = "FALSO"
' riga 16
TextD16 = TextD10
TextF16 = TextF10
TextH16 = TextJ10
If CInt(TextD16) + CInt(TextF16) - CInt(TextH16) = 0 Then TextJ16 = "VERO": value = value + 1 Else TextJ16 = "FALSO"
' riga 17
TextD17 = TextC4 & TextD4
TextF17 = TextD7
TextH17 = TextD10
If CInt(TextD17) - CInt(TextF17) * CInt(TextH17) = 0 Then TextJ17 = "VERO": value = value + 1 Else TextJ17 = "FALSO"
' riga 18
TextD18 = TextF4
TextF18 = TextF7
TextH18 = TextF10
If CInt(TextD18) - CInt(TextF18) - CInt(TextH18) = 0 Then TextJ18 = "VERO": value = value + 1 Else TextJ18 = "FALSO"
' riga 19
TextD19 = TextI4 & TextJ4
TextF19 = TextJ7
TextH19 = TextJ10
If CInt(TextD19) - CInt(TextF19) * CInt(TextH19) = 0 Then TextJ19 = "VERO": value = value + 1 Else TextJ19 = "FALSO"
' riga 20
TextJ20 = value
If TextJ20 = 6 Then
risultato = True
Else
risultato = False
End If
DoEvents ' per vedere la progressione
End Function
Non puoi controllare se su TextJ20 c'è il valore 6, se non ci hai messo nulla.
manca la riga 67:
' riga 20
TextJ20 = value
Ultima modifica effettuata da Carlo 06/03 20:43
in programmazione tutto è permesso
06/03 21:10
maurizio74
Ciao Carlo,
sembra funzionare tutto solamente che esce e mi chiude il form come mai???
ho provato a mettere stop e return al posto di end ma poi lo blocca...
grazie
Ultima modifica effettuata da maurizio74 06/03 22:10
aaa