Errore _xlfn.IFERROR improvviso

Anonimo
2014-01-24T17:13:28+00:00

Ciao a tutti,

mi riferisco sempre al file "Gestione Progetti e Notule" del quale oramai a forza di pezzi di codice l'ho pubblicato tutto sul forum.

L'ho utilizzato tranquillamente per un bel periodo di tempo, direi per almeno 10/11 mesi senza che desse problemi se non quelli che insieme abbiamo risolto, ma ieri al lancio di una funzione di salvataggio che ha sempre funzionato meravigliosamente bene la routine si blocca e passa al debug di Visual Basic.

La routine è questa e l'errore lo da bloccandosi su nome.Delete in grassetto.

La routine viene richiamata da un'altra che salva il foglio.

__________________________________________

Public Sub cancella_nomi() ' cancella tutti i nomi dal foglio ad eccezione dell'area di stampa in modo                                        ' che ricaricando il file salvato

Dim wk As Workbook        ' non ci sia il conflitto con i nomi che restano sulla sessione di excel

Dim nome As Name

Set wk = ActiveWorkbook

With wk

For Each nome In .Names

    If LCase(nome.NameLocal) <> "Fattura!Area_Stampa" Then nome.Delete

    'Debug.Print (nome.NameLocal)

Next

End With

Set nome = Nothing

Set wk = Nothing

End Sub

__________________________________________

Se con il mouse, a Debug interrotto, mi posiziono su LCase(nome.NameLocal) nella casellina che appare mi fa vedere         = _xlfn.IFERROR

e questi sono i nomi che ho visualizzato tramite Print e che dovrebbe cancellare meno uno e che ripeto ha cancellato fino a ieri.

_xlfn.IFERROR

Fattura!Area_stampaclienteelencoprivato

ho cercato nei nomi, ma _xlfn.IFERROR non esiste.

Grazie a chi può interessarsi.

Tullio

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2014-01-28T10:30:12+00:00

Grazie a tutti,

ho risolto il problema utilizzando

ActiveCell.FormulaR1C1 = _

        "=IF(ISERROR(VLOOKUP(RC[-1],Rubrica!R2C2:R65536C15,9,FALSE)),"" valore di ricerca errato"",VLOOKUP(RC[-1],Rubrica!R2C2:R65536C15,9,FALSE))"

Ciao, alla prossima.

Tullio

La risposta è stata utile?

0 commenti Nessun commento

18 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-01-28T09:06:15+00:00

    Yes, il VBA conosce solamente l'inglese.

    Andrea lo sa, lo scrivo per chi non ne è a conoscenza.

    Gli si possono forzare le formule in italiano (o qualsiasi altra lingua)... ;-)  

    MA E' SCONSIGLIATISSIMO!!!!


    Ad esempio:

    Public Sub m_1()

        Dim d As Double

        Dim sh As Worksheet

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        sh.Range("A10").FormulaLocal = "=SOMMA(A1:A9)" '<<=Le formule della localizzazione

        Set sh = Nothing

    End Sub

    Public Sub m_2()

        Dim d As Double

        Dim sh As Worksheet

        Set sh = ThisWorkbook.Worksheets("Foglio1")

        sh.Range("B10").Formula = "=SUM(B1:B9)" '<<=Le formule inglesi, da usare sempre!!!

        Set sh = Nothing

    End Sub

    Ripeto, da EVITARE accuratamente. Il motivo è che se Excel è localizzato in italiano e viene utilizzato su di una macchina con Excel  localizzato in altra lingua, nella cella ci si ritrova #NOME? (ovviamente con NOME tradotto nella lingua di localizzazione). Come giustamente faceva notare Andrea, nella sua *ignorantaggine* il Visual Basic conosce solo l'inglese.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-01-27T18:19:05+00:00

    Ciao Mauro, Ciao Norman,

    ho continuato a provare e una volta trovata la formula che mi pareva giusta, l'ho registrata in una macro ma appare molto diversa dai comandi che gli avevo dato anche se penso che si tratti di comandi in inglese, ecco quà:

    ActiveCell.FormulaR1C1 = _

            "=IF(ISERROR(VLOOKUP(RC[-1],Rubrica!R2C2:R65536C15,9,FALSE)),"" non

    disponibile"",VLOOKUP(RC[-1],Rubrica!R2C2:R65536C15,9,FALSE))"

    è tutto regolare ?

    Grazie e Ciao.

    Tullio

    Yes, il VBA conosce solamente l'inglese.

    andrea.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-01-27T18:07:48+00:00

    Ciao Mauro, Ciao Norman,

    ho continuato a provare e una volta trovata la formula che mi pareva giusta, l'ho registrata in una macro ma appare molto diversa dai comandi che gli avevo dato anche se penso che si tratti di comandi in inglese, ecco quà:

    ActiveCell.FormulaR1C1 = _

            "=IF(ISERROR(VLOOKUP(RC[-1],Rubrica!R2C2:R65536C15,9,FALSE)),"" non

    disponibile"",VLOOKUP(RC[-1],Rubrica!R2C2:R65536C15,9,FALSE))"

    è tutto regolare ?

    Grazie e Ciao.

    Tullio

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-01-27T13:54:50+00:00

    Ciao Mauro, ciao Norman

     fatto, credo sia questo il link

    https://www.dropbox.com/s/a7s4dk55hw6sfhu/Gestione%20Progetti%20e%20Notule%20rev-081.xlsm

    Tullio

    Se ci fosse bisogno di chiarimenti................. premere il pulsante Archivia.........

    La risposta è stata utile?

    0 commenti Nessun commento