Loop non voluto macro



  • Loop non voluto macro
    di Friend34 (utente non iscritto) data: 31/05/2015 12:48:50

    Ho un problema banale ma irritante che non riesco a risolvere.
    In un piccolo database excel ho creato una macro che, nel caso trovasse una corrispondenza tra i dati contenuti nel foglio 2 e i dati inseriti in una cella del foglio 1, chiami una seconda macro che si occupa di estrarre le coordinate della cella nel foglio 2 dove sono presenti i dati e riportarli in una cella del foglio 1.
    Nel caso invece non trovasse i dati richiesti dovrebbe far comparire un messaggio d'errore.
    Dovrebbe perchè finchè trova i dati la macro si arresta correttamente e tutto funziona.
    Il problema è nel momento in cui non trova i dati, in quanto inizia un loop infinito con il messaggio d'errore che compare n volte e non posso bloccare la macro senza ricorrere a CTRL + BLOC SCORR.
    Probabilmente mi sto perdendo in un bicchier d'acqua, ma non so più dove sbattere la testa per risolvere
     
    Sub cerca()
    Set f1 = Worksheets("Inserimento")
    Set f2 = Worksheets("Database")
    Sheets("Database").Select
    For Each Cell In Range("A1:Z40")
    If Cell.Value = f1.Range("E12") Then
    Call trovato
    Else
    MsgBox "Codice non presente in store. Richiesta aggiornata"
    Sheets("Inserimento").Select
    
    End If
    Next
    
    End Sub
    ---------------------------------------
    Sub trovato()
    Set f1 = Worksheets("Inserimento")
    Sheets("Database").Select
    
    ActiveSheet.Cells.Find (f1.Range("E12"))
    
    Dim f As Range
    
    Set f = ActiveSheet.Cells.Find(f1.Range("E12"))
    
    If Not f Is Nothing Then
        f1.Range("E19").Value = ActiveCell.Address(False, False)
        MsgBox ActiveCell.Address(False, False)
    Else
        MsgBox "Il codice non è presente in store. Richiesta registrata"
    End If
    End Sub
    



  • di lepat (utente non iscritto) data: 31/05/2015 13:31:48

    Se il codice non viene trovato selezioni il foglio "Inserimento", perché ? prova ad eliminalre la riga
     
    Sheets("Inserimento").Select



  • di Obelix (utente non iscritto) data: 31/05/2015 17:53:27

    Premesso che, a mio parere, tutte le variabili andrebbero sempre definite, proverei il Codice:
     
    Sub cerca()
    Set f1 = Worksheets("Inserimento")
    Set f2 = Worksheets("Database")
    Sheets("Database").Select
    For Each Cell In Range("A1:Z40")
    If Cell.Value = f1.Range("E12") Then
    Cell.Select
    Call trovato
    Else
    End If
    Next
    Sheets("Inserimento").Select
    MsgBox "Codice non presente in store. Richiesta aggiornata"
    End
    End Sub
    
    



  • di Friend34 (utente non iscritto) data: 11/06/2015 23:10:41

    Scusate se ringrazio solo oggi ma non ho avuto modo di controllare prima.
    Con la soluzione di Obelix la macro si stoppa correttamente,grazie.