Enigma VB6 AIUTO

di il
3 risposte

Enigma VB6 AIUTO

Salve a tutti del forum,
ho un problema con un codice vb6, non sono ferratissimo in quanto autodidatta ai primi approcci con questo linguaggio.
Vi espongo la problematica sapendo che per molti di voi sarà una passeggiata:
Ho un file excel con circa 36 fogli + 1 foglio di riepilogo generale(TOT) + 1 foglio per confrontare dei dati (CONFRONTO). Nei 36 fogli devo controllare quali celle della colonna "G" hanno un valore =1, in caso affermativo devo copiare le celle della colonna B (della stessa riga dove in G la cella è =1) nel foglio di confronto in una determinata posizione (da A14 fino a A36).
Grazie a chiunque mi risponde

3 Risposte

  • Re: Enigma VB6 AIUTO

    Ciao, immagino che stai parlando di una macro all'interno del foglio excell??
    In questo caso cerco di illustrarti una possibile soluzione.

    Per ogni foglio devi eseguire una scansione della colonna G utilizzando l'istruzione cells, che prende come parametri l'indice della riga e della colonna, riferite alla cella che vuoi selezionare:

    la colonna G ha indice di colonna 7 (A=1, B=2, C=3, ecc)
    
    for i = 1 to n
       valore = cells(i, 7).value
       if valore = 1 then
          copiaDati i
       end if
    next
    
    la funzione copiaDati, prende come parametri l'indice della riga della quale si vogliono copiare i dati e sempre con l'istruzione cells, prende i dati della colonna B e li mette nel foglio CONFRONTO
    
    private sub copiaDati(byval id_riga as integer)
       dim valore as integer
    
       valore = cells(i, 2).value
       CONFRONTO.cells(riga_dest, colonna_dest).value = valore
    end sub
    
    dove riga_dest e colonna_dest sono due variabili che determineranno il posizionamento del dato nel foglio confronto.

    Spero di esserti stato di aiuto
  • Re: Enigma VB6 AIUTO

    Grazie per il tuo aiuto,
    avevo postato la richiesta anche in un altro forum e mi hanno risposto con questo codice:

    Sub CopiaSE()
    r = 14
    For x = 3 To Sheets.Count ' se i fogli dove c'è 1 non partono dal terzo folgio, cambiare
    For y = 1 To 100 'questo è il numero massimo delle righe che possono _
    contenere il valore 1 nella colonna G dei fogli _
    se sono di più variare
    If Sheets(x).Cells(y, 7) = 1 Then
    Sheets("CONFRONTO").Cells(r, 2) = Sheets(x).Cells(y, 2)
    r = r + 1
    End If
    Next
    Next
    End Sub

    Ho provato e sembra funzionare alla perfezione.
    Ad ogni modo sei stato gentilissimo nel rispondere alla mia richiesta di aiuto.
    A presto
  • Re: Enigma VB6 AIUTO

    Figurati, ognuno interpreta il problema a suo modo e fornisce sempre una soluzione diversa.
Devi accedere o registrarti per scrivere nel forum
3 risposte