2017-10-02 5 views
1

J'ai inséré la formule ci-dessous dans VBA mais j'obtiens VBA Run Time Error 1004 - "Echec de object_Global failed" - Je ne suis pas sûr de ce qui me manque. La formule fonctionne dans Excel mais pas quand je traduis vers VBA.Erreur d'exécution VBA 1004 - Echec de l'objet object_Global - IF Formula

Range("AF") ="=IF(OR(AND(LEN('ACCOUNT DATA'!V2)=8,LEFT('ACCOUNT DATA'!V2,2)=""60""),LEFT('ACCOUNT DATA'!V2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!X2)=8,LEFT('ACCOUNT DATA'!X2,2)=""60""),LEFT('ACCOUNT DATA'!X2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!Y2)=8,LEFT('ACCOUNT DATA'!Y2,2)=""60""),LEFT('ACCOUNT DATA'!Y2,3)=""CSN""),""CDR Created"",""CDR Pending"")))" 

FORMULE CORRIGÉ: je manquais le numéro de ligne dans ma gamme ... donc au lieu de AF2 AF:

Range("AF2") ="=IF(OR(AND(LEN('ACCOUNT DATA'!V2)=8,LEFT('ACCOUNT DATA'!V2,2)=""60""),LEFT('ACCOUNT DATA'!V2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!X2)=8,LEFT('ACCOUNT DATA'!X2,2)=""60""),LEFT('ACCOUNT DATA'!X2,3)=""CSN""),""CDR Created"",IF(OR(AND(LEN('ACCOUNT DATA'!Y2)=8,LEFT('ACCOUNT DATA'!Y2,2)=""60""),LEFT('ACCOUNT DATA'!Y2,3)=""CSN""),""CDR Created"",""CDR Pending"")))"

+0

Le problème n'est alors pas dans la formule elle-même, mais dans l'instruction VBA. Pouvez-vous ajouter l'instruction VBA? Quelque chose comme 'myRange.Formula =" = IF (OR (ET (...))) "' –

+0

@ BranislavKollár J'ai mis à jour le code –

Répondre

2

Cette erreur signifie généralement que vous faites référence implicitement à la feuille active quelque part que vous ne devriez pas être, par exemple:

Sheet2.Activate 
Sheet1.Range(Cells(1,1), Cells(2,2)) = 42 'boom: "Cells" is referring to Sheet2 

ici, vous obtenez parce que Range("AF") ne signifie pas grand chose à Excel. Essayez ceci:

[ActiveSheet.]Range("AF:AF").Formula = "..." 

Vous aurez probablement envie de calculer les lignes réelles bien, parce que cela va mettre la formule sur chaque ligne unique de la colonne AF, ce dont je doute est ce que vous voulez vraiment.

Note, vous devez qualifier que Range appel avec un objet Worksheet approprié, et puisque vous assignant la formule vous devriez le dire explicitement - une propriété par défaut de Range des points à sa valeur , donc vous utilisez beaucoup de comportement implicite pour que ce code fonctionne: mieux vaut en faire autant que possible explicite.