VBA Excel e funzione Vlookup

Anonimo
2018-09-13T16:05:39+00:00

Buongiorno a tutti

ho 2 fogli excel , nel primo imposto un ciclo for next che mi prende il codice articolo , poi chiamo la funzione vlookup che deve cercare nel secondo foglio chiamato Articoli il valore della fabbrica .

La funzione :

plant = WorksheetFunction.VLookup(cd_articolo, Worksheets("articoli").Range("A2:B7000"), 2, False)

mi restituisce sempre l'errore

vlookup non disponibile per la classe WorksheetFunction

ma perchè ? Dov'è l'errore ?

grazie mille a tutti

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

4 risposte

Ordina per: Più utili
  1. Anonimo
    2018-09-13T16:45:04+00:00

    Ciao IL CREM,

    Buongiorno a tutti

    ho 2 fogli excel , nel primo imposto un ciclo for next che mi prende il codice articolo , poi chiamo la funzione vlookup che deve cercare nel secondo foglio chiamato Articoli il valore della fabbrica .

    La funzione :

    plant = WorksheetFunction.VLookup(cd_articolo, Worksheets("articoli").Range("A2:B7000"), 2, False)

    mi restituisce sempre l'errore

    vlookup non disponibile per la classe WorksheetFunction

    ma perchè ? Dov'è l'errore ?

    Per intercettare l'errore ed evitare il tuo problema, prova qualcosa del genere:

    '=========>>

    Public Sub Tester()

        Dim plant As String

        Dim Res As Variant

        Dim cd_articolo As String

        cd_articolo = "Pippo"

        Res = Application.VLookup( _

              cd_articolo, Worksheets("articoli"). _

                           Range("A1:B7000"), 2, False)

        If Not IsError(Res) Then

    plant = Res

        Else

            Call MsgBox( _

                 Prompt:=cd_articolo & " non trovato!", _

                 Buttons:=vbInformation, _

                 Title:="REPORT")

        End If

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2018-09-17T10:17:13+00:00

    Sembra tutto ok ma  continuando a non funzionare ho optato per la soluzione function pfindrows, imparata proprio in questo gruppo ...

    Grazie a tutti.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2018-09-14T18:20:21+00:00

    Ciao IL CREM,

    Con il tuo codice :

    For n = 6 To 6500

        

        If IsNull(Cells(n, 2)) Or IsEmpty(Cells(n, 2)) Then Exit Sub    

        

            Dim plant As String

            Dim Res As Variant

            Dim cd_articolo As String

         

        ' cd_articolo = "251439"

            cd_articolo = Cells(n, 7).Value

            Res = Application.VLookup( _

                cd_articolo, Worksheets("articoli"). _

                            Range("A1:B7000"), 2, False)

            If Not IsError(Res) Then

                plant = Res

            Else

                Call MsgBox( _

                 Prompt:=cd_articolo & " non trovato!", _

                 Buttons:=vbInformation, _

                 Title:="REPORT")

            End If

    Next n

    errori non me ne da , però non trova mai nessuna corrispondenza , anche se c' è .

    Mentre se gli metto un codice articolo fisso come ad esempio :

    cd_articolo = "251439"

    funziona.

    Eppure in debug il campo cd_articolo è una stringa ed il valore del codice sembra corretto .

    Quale può essere adesso il problema ?

    Il fatto che la funzione CERCA.VERT restituisce un errore è un'indicazione che il valore assegnato alla variabile cd_articolo non è stato trovato nell'intervallo di interesse sul foglio.

    In assenza del tuo file, posso solo suggerire che un tale errore potrebbe essere dovuto ad un sottile differenza tra il valore di ricerca e il valore sul foglio. Forse, ad esempio, c'è un spazio di più o di meno.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2018-09-14T13:25:45+00:00

    Ciao,

    innanzitutto grazie.

    Con il tuo codice :

    For n = 6 To 6500

        If IsNull(Cells(n, 2)) Or IsEmpty(Cells(n, 2)) Then Exit Sub

            Dim plant As String

            Dim Res As Variant

            Dim cd_articolo As String

        ' cd_articolo = "251439"

            cd_articolo = Cells(n, 7).Value

            Res = Application.VLookup( _

                cd_articolo, Worksheets("articoli"). _

                            Range("A1:B7000"), 2, False)

            If Not IsError(Res) Then

                plant = Res

            Else

                Call MsgBox( _

                 Prompt:=cd_articolo & " non trovato!", _

                 Buttons:=vbInformation, _

                 Title:="REPORT")

            End If

    Next n

    errori non me ne da , però non trova mai nessuna corrispondenza , anche se c' è .

    Mentre se gli metto un codice articolo fisso come ad esempio :

    cd_articolo = "251439"

    funziona.

    Eppure in debug il campo cd_articolo è una stringa ed il valore del codice sembra corretto .

    Quale può essere adesso il problema ?

    grazie ancora

    La risposta è stata utile?

    0 commenti Nessun commento