find formula



  • find formula
    di lucippo (utente non iscritto) data: 08/11/2012 17:18:36

    Ciao a tutti,
    nel seguente codice intendo cercare il valore che sta in Cell.Offset(0, 3) all'interno di una lista di nomi che sta in colonna B del foglio UserRole. Il codice funziona e restituisce True quando il nome viene trovato. Invece quando il valore non esiste in colonna B mi da errore. Come faccio a fare in modo che quando il valore non viene trovato mi venga restituito "False" come risultato?

    grazie mille

     
    sub find()
    
    Sheets("UserRole").Select
    Columns("B:B").Select
    
    Results = Selection.Find(What:=Cell.Offset(0, 3).Value, After:=ActiveCell, LookIn:= _
            xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
            xlNext, MatchCase:=False, SearchFormat:=False).Activate
            
          
    Cell.Offset(0, 4).Value = Result
    
    end sub



  • di Vecchio Frac data: 08/11/2012 18:23:38

    Nel tuo codice, Cell non è definito come Range.
    Inoltre "Results" è cosa diversa da "Result".
    Il risultato di .Find deve essere un oggetto, quindi testare se è a Nothing ti dirà se il valore è stato trovato.
    Per restare fedele al tuo codice, prova la Sub allegata chiamandola così:
    find([C1])
    dove tre celle dopo C1 (cioè in F1) c'è il valore da ricercare.
    Comunque mi chiedo perchè nel tuo codice cerchi una formula e non un valore :)
     
    Option Explicit
    
    Sub find(cell As Range)
    Dim result As Range
    
        Sheets("UserRole").Select
    
        Set result = [B:B].find(What:=cell.Offset(0, 3))
            
        If Not (result Is Nothing) Then cell.Offset(0, 4) = result
    
    End Sub






  • di lucippo (utente non iscritto) data: 08/11/2012 18:47:26

    grazie infinite VecchioFrac!!!
    Scusami, ho fatto un po'di errori nel codice che ho inserito...andavo un po' di fretta...era un piccolo pezzo di una procedura "FOR EACH cell in Range....Next cell" piu lunga
    Ho usufruito del tuo pezzo di codice e funziona alla grande!! inoltre e' breve e di facile comprensione, perfetto!!
    ti auguro una fantastica serata



  • di Vecchio Frac data: 08/11/2012 19:52:08

    cit. " era un piccolo pezzo di una procedura "FOR EACH cell in Range....Next cell" "
    ---> Mi è venuto in mente dopo infatti, che poteva essere così, ma mi raccomando sempre Option Explicit. In questo modo gli errori tipo results/result potrebbero saltare fuori evitandoti lunghi mal di testa :)

    cit. " ti auguro una fantastica serata "
    ---> uau... raramente si vedono questi saluti bene augurali ;)