Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165

    [vb6] ricercare un valore all'interno di una cella excel

    Ciao a tutti e vi ringrazio in anticipo per l'interessamento e le risposte che mi darete,

    Come dice il titolo avrei bisogno di LEGGERE UN VALORE ALL'INTERNO DI UN FOGLIO EXCEL E DI RESTITUIRE LA POSIZIONE DI TALE VALORE.

    Ho già aperto un file excel e tutto mi manca solo la lettura. a parole dovrei:

    ricerca il valore = 'pippo' (da cella 1 a cella 10)
    se è stato trovato dammi la posizione del valore trovato
    scrivi in questa posizione un altro valore

    Se non mi sono spiegato bene ditemelo

    Grazie ancora

  2. #2
    Ciao,
    non conosco VB6 ma conosco il VBA di excel che dovrebbe essere una diretta derivazione di VB quindi provo a dirti come si fa in VBA e vedi se riesci ad adattarlo alle tue esigenze:

    codice:
       For Each Casella In Worksheets("Foglio1").Range("A1:A10")
          If CStr(Casella.Value) = "pippo" Then
             [H1] = Casella.Row
             [H2] = Casella.Column
             [F5] = "altro valore"
          End If
       Next
    tieni presente che un range lo puoi anche individuare con la funzione cells che richiede riga e colonna come argomenti e puoi anche leggere o scrivere in una cella allo stesso modo

    codice:
       For Each Casella In Worksheets("Foglio1").Range(Cells(1, 1), Cells(10, 1))
          If CStr(Casella.Value) = "pippo" Then
             Cells(1, 8).Value = Casella.Row
             Cells(2, 8).Value = Casella.Column
             [F5] = "altro valore"
          End If
       Next

    Spero che ti basti.

    Ciao
    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165
    Grazie mille per la risposta

    ora provo subito e poi ti faccio sapere

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165
    Ho verificato il tuo esempio però non capisco bene cosa fa nel punto in cui ti ho inserito un commento:

    codice:
    Set cartExcel = Excel.Workbooks.Open("e:\pc_over.xls")
    For Each casella In Worksheets("Foglio1").Range(Cells(1, 1), Cells(10, 1))
          If CStr(casella.Value) = "Marlboro" Then
             Cells(1, 8).Value = casella.Row         'QUI (SE TROVA LA SCRITTA MALBORO CHE VALORI METTE NELLE CELLE (1,8) E (2,8)??????  
             Cells(2, 8).Value = casella.Column
             [F5] = "altro valore"
          End If
       Next
    Comunque il mio problema sarebbe:

    Andare a verificare se nel range c'è quel valore, se quel valore che cerco esiste mi deve dire in che cella è, ed io vado a scrivere in una cella della stessa riga una qtà.

    dimmi se mi sono spiegato male.
    Grazie ancora.

    P.s. non sono molto esperto di vb6

  5. #5
    Ciao,
    scusa, non ho spiegato nel dettaglio perché mi sembrava chiaro ma rimedio subito.

    Il ciclo For Each esamina un range casella per casella (dall'alto in basso e da sinistra a destra) e pone l'elemento in esame, cioè una casella alla volta, con tutte le sue proprietà, nella variabile Casella.

    All'interno del ciclo si possono quindi interrogare le proprietà di Casella come Casella.Value che è il contenuto o Casella.Row che è la riga o Casella.Column che è la colonna.

    Nelle celle (1,8) e (2,8) andavo quindi a mettere la riga e la colonna della casella in esame ma solo se il contenuto superava il test. In altre parole andavo a mettere la riga e la colonna della casella che contiene il testo cercato.

    I valori 1,8 e 2,8 li ho scelti a caso, è solo un modo per visualizzare dei valori in excel, li metti in una cella qualsiasi così li vedi.

    Un'altra proprietà che potrebbe tornarti utile è la Offset che permette di puntare ad una casella spostata di un certo numero di righe e colonne rispetto a quella a cui viene applicata.

    Per scrivere, per esempio, paperino, due celle più a destra di quella che contiene pippo basta fare così:

    codice:
       For Each Casella In Worksheets("Foglio1").Range(Cells(1, 1), Cells(10, 1))
          If CStr(Casella.Value) = "pippo" Then
             Casella.Offset(0, 2) = "paperino"
          End If
       Next
    E' un po' più chiaro ora?

    La democrazia rappresentativa ha fatto il suo tempo, è ora di passare alla democrazia diretta.
    www.beppegrillo.it

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165
    Verifico subito e ti faccio sapere...
    grazie per le spiegazioni

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2010
    Messaggi
    165
    Sei un geniooooooooooooooooooooooooooooooooo
    funziona alla perfezioneeeeeeeeeeeeeeeeeeeee

    Grazie infinitamente

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.