2010-11-15 26 views
2

Je rencontre des problèmes avec VLOOKUP dans mon VBA. Voici un exemple du code que je utilise:VBA VLOOKUP Convertir en valeurs Donne # N/A

Sub Macro15() 
' 
' Macro15 Macro 
Dim LR As Long 
LR = Cells(Rows.Count, "A").End(xlUp).Row 
Range("B1:B" & LR).FormulaR1C1 = _ 
"=VLOOKUP(RC[-1],'https://internal_sharepoint_address 
    /[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,4,FALSE)" 
Range("C1:C" & LR).FormulaR1C1 = _ 
    "=VLOOKUP(RC[-2],'https://internal_sharepoint_address 
/[Vendor_Information.xlsx]Sheet1'!R3C3:R150C18,5,FALSE)" 
With Range("B1:C" & LR) 
.Value = .Value 
End With 
End Sub 

Le problème est que les valeurs dans les colonnes B & C (les formules RECHERCHEV) renvoient une valeur de # N/A.

Cependant, si j'arrête le code avant la conversion de la formule de valeurs (l ' « Avec Range (» B1: C « & LR) » ligne), la formule RECHERCHEV renvoie les valeurs correctes .

Étrange aussi - si j'efface le contenu des colonnes B & C et réexécute le code ci-dessus, les valeurs retournent bien. Si j'essaye d'ajouter un deuxième cycle à la VBA, cependant, cela ne fonctionne PAS. Toute la sagesse que n'importe qui peut fournir serait une aide énorme. Je suis coincé là-dessus depuis longtemps, et je suis juste à la fin de mon esprit.

Merci à tous, David

Répondre

1

Vous aurez probablement besoin d'ajouter dans une étape qui exécute un cycle de calcul avant d'essayer de le remplacer par la valeur:

Application.Calculate 

Modifier du commentaire: Je voudrais Imaginez que récupérer des données de recherche à partir d'un classeur lié sur un site Sharepoint prendrait un certain temps. Peut-être ajouter des boucles de délai? Pouvez-vous faire deux macros séparées (une finissant avec les formules, et une deuxième commençant aux valeurs de collage), et les exécutent séparément avec une pause entre les deux?

+0

Salut Brad - Merci pour la réponse rapide! J'ai donné un coup de feu, en ajoutant Application.Calculate (et plus tard, Application.CalculateFull) juste avant le "Avec Range (" B1: C "& LR)" code, mais toujours pas de dés. D'autres idées? – David

+0

@David: pas sûr, mais j'imagine que récupérer des données de recherche à partir d'un classeur lié sur un site Sharepoint prendrait un certain temps. Peut-être ajouter des boucles de délai? Pouvez-vous faire deux macros séparées (une finissant avec les formules, et une deuxième commençant aux valeurs de collage), et les exécutent séparément avec une pause entre les deux? – BradC

+0

Brad, tu es officiellement mon héros. Ça a marché; en augmentant le VLOOKUP au début du code (c'était juste une petite partie de la macro), et en exécutant une deuxième macro pour les convertir en valeurs travaillées! Je vous remercie beaucoup pour votre aide!!!! – David