Oppure

Loading
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. :k:

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.:asd:
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