Novità

Perchè sbaglio questo codice?

i legend

Premium Member
Buon giorno a tutti, posto il codice che non riesco ad ottenere.

Vorrei caricare dei numeri da un input box o tex box,

prenderli , caricarli in un array e poi

moltiplicarli, sommarli, combinarli, farci anche la diffrenza.

So che per voi questo è semplice ma vorrei imparare dalle basi. finchè non lo risolvo continuerò a sbatterci la testa.:mad:

Posto il codice:
Codice:
sub ScegliNumeri

Dim sStrNum as string   ' stringa dei valori 
Dim Numeri as string     ' numero singolo estratto dalla stringa
Dim k as byte
Dim VetNum(0)         ' vettore che contiene la stringa numerica


sStrNum= inputBox("Inserisci sequenza Numerica da analizzare","Analesi Numerica")


 Redim VetNum(K)


    for k= 1 to len(sStrNum) step 3
        numeri=mid(sStrNum,K,2)
        Numeri(k)=numeri
        print numeri    ' se faccio print numeri i numeri scorrono, 
    next K
'  vorrei fare un ciclo for per poterli combinare o sommare  
' es: for x= Lbound(Numeri) to Ubound(numeri)   per scorrere l'array numeri ma che passaggio salto?
end sub

Poi se risolvo questo, vorrei costruire il form con i 90 ceckBox per inserirli nella tex...

Se i numeri non fossero formattati "00" potrei estrarli cercando per esempio il simbolo che li divide?

esempio : "." carattere separatore,

per x= 1 to len stringa



Forse dovrei partire dal fondo della stringa
cerca punto , conta caratteri fino altro punto, sottrai ed estrai....

help?

anche solo la logica

Grazie mille
Buona giornata a tutti ;-)
 
vediamo un po' .. quale sarebbe l'array ?
Sei sicuro che lo stai valorizzando ?
 
Ciao Luigi, ho fatto varie prove,
L'array da valorizzare è vetNum,
Ho messo un contatore conta che mi conta gli elementi,
quindi : Redim VetNum(conta) _> questo dovrebbe Valorizzarla

Poi VetNUm(Conta)= Numeri(k) -> questo mi da tutti i numeri immessi

Poi con lBound e Ubound dovrei scorrere tutti gli elementi per poterci fare le oprerazioni...
se combino lascio stringhe
se faccio operazione matematiche scrivo cInT( stringa)

ecco il codice: ma mi restituisce oorrore
Codice:
sub ScegliNumeri

Dim sStrNum as string   ' stringa dei valori 
Dim Numeri as string     ' numero singolo estratto dalla stringa
Dim k as byte,x as byte,y as byte
Dim VetNum(0)         ' vettore che contiene la stringa numerica
Dim aNumeri(0)     ' vettore che contiene i singoli valori
Dim Conta as byte
sStrNum= inputBox("Inserisci sequenza Numerica da analizzare","Analesi Numerica")

Conta=0
 

    for k= 1 to len(sStrNum) step 3
        numeri=mid(sStrNum,K,2)
        Conta=conta+1
        Redim VetNum(Conta)
        VetNum(Conta)=Numeri(k)
        for x =1 to ubound(Numeri(k))-1
            for y= x+1 to Ubound(Numeri(k))
        print Format((x),"00")&"."&format((Y),"00")
        next y
        next x  ' se faccio print numeri i numeri scorrono, 
    next K
'  vorrei fare un ciclo for per poterli combinare o sommare  
' es: for x= Lbound(Numeri) to Ubound(numeri)   per scorrere l'array numeri ma che passaggio salto?
end sub

A dopo :)
 
guarda perdonami ora non ho tempo , ci sono davvero diversi errori ... il metodo giusto non credo sia quello di mettersi a fare piccoli spezzoni di codice se non si ha padronanza delle istruzioni ..

tanto per cominvciare a che serve ubound ? E Che argomenti bisogna passargli ?
 
Ciao Luigi ,figurati anzi grazie, per il tempo che spendi, per queste piccole cose.
Allora , ora vado a studiarlo, ma al momento , LBound è il primo valore della matrice, Ubound l'ultimo. in pratica dovrei utilizzarlo per scorrere tutti gli elementi della matrice.
Ora queste le mie conoscenze allo stato attuale, :confused:. vado a studiare....
A dopo
 
Forse è più corretto dire che queste funzioni restituiscono , non il valore ma l'indice della matrice che vogliamo scorrere.
Quindi Lbound(Numeri(k)) se non ho capito male è indice zero della matrice numeri (18) ossia n(0)= "valore1", ubound l'indice più grande quindi: n(18)="valore18".
So che è semplice , se capisco questo poi prometto che comincio a gattonare da solo:o.
Buona Cena, vista l'ora....
 
Ciao legend, io non conosco quello che tu veramente vuoi imparare, ma penso che devi
prima di tutto capire cosa realmente vuoi fare e di conseguenza applicarti leggendo e
cercando di capire cosa fà un codice, anche se scritto da altri.
La cosa più importante è comunque cercare prima di tutto, di capire quello che si vuole
realizzare e cercare di capire come utilizzare le istruzioni che ne fanno parte.
Ti riporto una piccola spiegazione sulle Matrici o Array, se vuoi utilizzarle cerca di capirne
prima di tutto l'utilizzo.
Le matrici dinamiche si comportano e vengono utilizzate come quelle statiche
ma si rendono particolarmente utili se non si conosce a priori il numero di
elementi da collezionare o se si prevede di doverne spesso cambiare le dimensioni
durante l'esecuzione di una routine ed appunto per questo consentono di gestire la
memoria in modo più efficiente evitando inutili sprechi di memoria o restrizioni
nell'utilizzo.
La dichiarazione di una matrice dinamica si compie in due tempi:
1) una preliminare da fare nella sezione dichiarazione delle variabili:
Dim Matrice() ' con le parentesi vuote senza lo (0) che metti
2) una durante l'esecuzione di una routine
sono due i metodi da usare per ridimensionare in modo dinamico una matrice:
Redim Matrice(20)
Redim Matrice(1 To 20)
oppure:
Redim Preserve Matrice(25)
Redim Preserve Matrice(1 To 25)
Usando la prima sintassi i dati eventualmente memorizzati nella matrice
vengono persi.
Usando la seconda sintassi i dati eventualmente memorizzati nella matrice
vengono conservati.
Francesco
 
Ultima modifica:
Ciao pfca, anche se sembra confusionario, il mio intento è imparare a programmare.
non riesco ad afferrare la fase del passaggio alla seconda matrice
dichiaro una matrice vuota
Dim vetNum()

poi trovo la quantita di elementi che popolano la matrice e li dichiaro con Redim

nel mio caso ho utilizzato conta che è il numero di elementi
Redim vetNum(conta)

come faccio a caricare i numeri estratti dalla stringa della texBox?

Forse è troppo presto per questo studiero un manuale...

Grazie pfca:)
 
Ciao devi vederlo il codice, non serve leggerlo se non vedi cosa fà.
Il debug è utilissimo per vedere cosa fa il codice, leggere e provare
aiuta tantissimo. Prova questo codice:
Codice:
Sub ScegliNumeri()
Dim sStrNum As String   ' stringa dei valori
Dim Numeri As String     ' numero singolo estratto dalla stringa
Dim k As Byte, x As Byte, y As Byte
Dim Conta As Byte
sStrNum = InputBox("Inserisci sequenza Numerica da analizzare", "Analisi Numerica")
ReDim aNumeri(Len(sStrNum) / 3)
Conta = 0
    For k = 1 To Len(sStrNum) Step 3
    pp = Strings.Mid(sStrNum, k, 2)
        Conta = Conta + 1
        aNumeri(Conta) = pp
        Next k
        'ReDim VetNum(Conta)    'questa riga è un esempio
        For x = 1 To Conta
                MsgBox (Format((aNumeri(x)), "00"))
        Next x
End Sub
Francesco
 
ciao Legend , mi fa piacere che ti sta seguendo anche Francesco. Io ti volevo far notare con le mie domande che tu alla funzione ubound nel codice che hai scritto non passavi come argomento un array ma una stringa.
Poi volevo chiederti perche hai tipizzato tutto tranne l'array che deve contenere i numeri ? intendo perche non lo hai dichiarato pure quello
come int16 o altro tipo ..
non capisco in che contesto stai programmando forse in vb net ee stai facendo un progetto consolle.
Nel qual caso tu voglia imparare il vb net devi abbandonare alcuni schemi che conoscevi e imparare i nuovi.
Per esempio mentre negli script o in vb6 prima si dichiara una variabile e poi la si usa come iteratore di un ciclo
in vb net la variabile puo e salvo necessita differenti deve essere dichiarata direttamente nel ciclo


in vb net è cosi

Codice:
for k as integer = 1 to 10

next

gli arraysono sempre a base 0 non si puo dichiarare un array definendo il limite inferiore.

Ora queste sono le cose che mi vengono in mente.
Ciao
 
Buon giorno Luigi e pfca, grazie per le risposte.
Ho scaricato vs2010 express, ma ho problemi con l'installazione.ma so come risolvere, il vbnet con il mio pc penso posso essere solo un sogno:D.
Neanche excel 2013 posso installare.....che non ho i requisiti di sistema.La prima vincita seria mi prendo un pc meno obsoleto ;-)
Cmq continuo con lo studio, e spero con il vostro aiuto....
Buona giornata, oggi c'è il sole.
 
Un saluto ad entrambi, confermo quanto già avevo detto devi fare una scelta su cosa vuoi apprendere,
anche Luigi ti ha scitto:
non capisco in che contesto stai programmando forse in vb net ee stai facendo un progetto consolle.
Nel qual caso tu voglia imparare il vb net devi abbandonare alcuni schemi che conoscevi e imparare i nuovi.
Per una macro vba non serve avere excel 2013, anzi se hai una versione precedente (visto che hai un pc obsoleto)
è meglio.
Prendi una decisione e persegui quella, almeno per il primo periodo cerca di dedicarti solo all'apprendimento di un
linguaggio.
Francesco
 
Ultima modifica:
grazie pfca, faro proprio così,intanto il pc nuovo dopo stasera non lo compro......,ma va bene ugualmente.... /:-)
Buona serata a te e a tutti gli amici del forum...
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 21 gennaio 2025
    Bari
    78
    09
    70
    03
    23
    Cagliari
    32
    88
    30
    13
    45
    Firenze
    87
    23
    15
    39
    86
    Genova
    71
    48
    67
    59
    23
    Milano
    58
    50
    80
    85
    29
    Napoli
    90
    81
    79
    82
    62
    Palermo
    70
    33
    90
    05
    10
    Roma
    15
    71
    55
    85
    76
    Torino
    89
    09
    18
    33
    69
    Venezia
    44
    80
    82
    73
    58
    Nazionale
    80
    25
    13
    63
    17
    Estrazione Simbolotto
    Bari
    39
    36
    34
    14
    31
Indietro
Alto