Mike usa VLOOKUP regolarmente nei suoi fogli di lavoro, ma si chiede se esiste un modo per far eseguire una macro alla funzione se non riesce a restituire un valore.

Ci sono un paio di modi in cui potresti affrontare questo problema. Innanzitutto, è possibile utilizzare una formula condizionale per determinare se CERCA.VERT restituirà un valore o un errore. Se restituisce un errore, puoi fare in modo che la formula esegua una funzione definita dall’utente (MyUDF), come mostrato qui:

=IF(ISERROR(VLOOKUP(B2,CODES,1,FALSE)),MyUDF(), VLOOKUP(B2,CODES,1,FALSE))

Tutto quello che devi fare è assicurarti di inserire il tuo codice VLOOKUP effettivo nella formula (due volte) e sostituire MyUDF con il nome della funzione definita dall’utente che desideri attivare.

Un altro approccio consiste nell’impostare un gestore di eventi per l’evento Calculate.

Questo può essere piuttosto semplice, come nel seguente:

Private Sub Worksheet_Calculate()

If IsError(Range("A1")) Then Call Macro1 End Sub

In questo esempio si presume che la formula CERCA.VERT sia nella cella A1 e che si desidera eseguire una macro denominata Macro1 se CERCA.VERT restituisce un errore. La tua macro potrebbe quindi fare tutto ciò di cui hai bisogno. Ricorda inoltre che il gestore dell’evento Calculate deve essere posizionato nell’oggetto ThisWorksheet.

Potresti anche rendere il gestore dell’evento Calculate un po ‘più robusto, come mostrato qui:

Private Sub Worksheet_Calculate()

On Error GoTo myMac     Worksheets(1).Select     If Range("A1").Value Then         Exit Sub     End If myMac:

Macro1   'macro to run if VLOOKUP fails End Sub

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (10107) si applica a Microsoft Excel 2007 e 2010. Puoi trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: