Pourquoi utiliser ce code pour remplacer une formule me donnant une erreur?

0

Dans Excel, j'utilise ce qui suit pour effacer la cellule E5 et la remplacer par le nom du mot.

Sheets("Invoice").Range("E5") = "Name"

Je peux également utiliser ce qui suit pour remplacer G11 par le code VLOOKUP que j’ai ici et cela fonctionne.

Sheets("Invoice").Range("G11") = "=VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)"

Le problème est quand j'utilise,

Sheets("Invoice").Range("G11") = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Je reçois une erreur de débogage et la seule chose que je peux comprendre, ce sont les citations que j'ai au centre du code qui fait des ravages avec les citations utilisées au début et à la fin du code VB.

Thomas Schaef
la source

Réponses:

0

En VBA a " est utilisé pour entourer une chaîne. Pour utiliser un " à l'intérieur d'une chaîne, utilisez "". Ce qui ne va pas dans votre formule, c'est que VBA convertit les deux citations du milieu en une citation. Si vous remplacez le "" au milieu avec """", vous devriez être prêt à partir.

Voir ce lien de débordement de pile pour référence.

agtoever
la source
0

Si le simple fait de remplacer les guillemets de "" par "" "" ne résout pas le problème, vous devriez peut-être essayer de définir la propriété value de l'objet range au lieu de l'objet range lui-même.

Sheets("Invoice").Range("G11") = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

Vous essayez de définir l'objet Range sur une chaîne de valeur votre équation. Ce que vous voulez probablement faire est de définir la .texte , .valeur , ou .formule propriété égale à "nom" ou à votre formule. (aussi comme @agtoever mentionné il faut changer "" en "" "")

Essayez de cette façon:

Sheets("Invoice").Range("G11").value = "=IF(ISNA(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)),"""",(VLOOKUP(B11,INVENTORY!A$1:D$2501,INVENTORY!C$1,FALSE)))"

En utilisant .formule ou .texte Cela pourrait également fonctionner, mais je viens de regarder un de mes cahiers et voici comment je le fais fonctionner.

bigjake
la source