2017-08-02 1 views
1

J'essaye d'appliquer une formule qui écrit OUI ou NON dans une cellule vérifiant si une autre cellule commence par le texte Q).Appliquer la formule en VBA?

L'écriture manuelle dans Excel fonctionne.

=IF(LEFT(A2;2)="Q)";"YES";"NO") 

Mais lorsque je tente de le faire automatiquement à l'intérieur d'une macro

Range("R2").Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")" 

Erreur d'exécution '1004': Application définie ou un objet défini erreur

également , Je vais vouloir le faire pour toute la colonne, quelque chose comme ça

Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")" 

Mais pour cela, je dois résoudre le premier problème avant.

Qu'est-ce que je fais mal?

+2

GAUCHE (A2,2) - utilisez une virgule, pas un point-virgule – braX

+1

Ces points-virgules (;) doit être une virgule (,) –

Répondre

2

VBA utilise le séparateur virgule, indépendamment de vos paramètres locaux

Range("R2:R" & lastRow).Formula = "=IF(LEFT(A2,2)=""Q)"",""YES"",""NO"")" 
+1

Cela a résolu le problème, je vais accepter est le plus tôt possible. Je vous remercie. –

0

Au lieu de doubles guillemets. essayez de sauter les guillemets avec.

Par exemple: au lieu de "" Q "" essayer \ "Q \"

+0

Cette n'est pas vb.Net, c'est 'VBA'. Les symboles d'échappement sont différents. – Vityata

1

Vous pouvez toujours essayer l'option Enregistrer une macro : 1. Démarrez l'enregistrement 2. Coller la formule dans une cellule 3. Arrêter l'enregistrement 4. Regardez la macro enregistrée et comment il formate la formule

+0

J'ai essayé, mais il utilisait le format R1C1 et je ne le connais pas. –

1

En général, essayez la fo llowing:

  • Faire une formule viable dans Excel

  • Sélectionnez ensuite la cellule avec la formule pratique

  • Run le code

  • Dans la fenêtre immédiate quelque chose d'utile devrait être imprimé.


Le code:

Public Sub PrintMeUsefulFormula() 
    Dim strFormula As String 
    Dim strParenth As String 

    strParenth = """" 

    strFormula = Selection.Formula 
    strFormula = Replace(strFormula, """", """""") 

    strFormula = strParenth & strFormula & strParenth 
    Debug.Print strFormula 
End Sub 

Source: Error with IF/OR in VBA

1

Le Range.Formula attend une syntaxe EN-US.

Utilisez Range.FormulaLocal pour insérer une formule en fonction de vos paramètres régionaux:

Range("R2").FormulaLocal = "=IF(LEFT(A2;2)=""Q)"";""YES"";""NO"")"