2017-04-22 1 views
1

Je reçois unAppliquer Formula Pour Toute la gamme Utilisé

Type mismatch

erreur chaque fois que je tente d'exécuter cette syntaxe. Essentiellement tout ce que je veux faire est d'appliquer la formule à la colonne A de toute la gamme utilisée. Que devrais-je changer afin que cela fonctionne comme souhaité?

Dim wSheet As Worksheet: Set wSheet = Sheets("Master") 
Dim lr As Long: lr = wSheet.Cells(wSheet.Rows.Count, "A").End(xlUp).Row 
Dim form 

form = "=SUBSTITUTE(TRIM(D2),"-","")" 

With w.sheet 
    .Range("A2:A" & lr).FormulaR1C1 = form 
End With 

Répondre

1

D2 est une sytaxe xlA1; pas une syntaxe xlR1C1. Utilisez RC[3] pour fournir l'adresse relationnelle à D2 ou utilisez .Formula avec la syntaxe xlA1. Vous devez également doubler les guillemets dans une chaîne entre guillemets.

With wSheet 
    lr = .Cells(.Rows.Count, "D").End(xlUp).Row 
    form = "=SUBSTITUTE(TRIM(D2),"" - "", TEXT(,))" 
    .Range("A2:A" & lr).Formula = form 
    form = "=SUBSTITUTE(TRIM(RC[3]),"" - "", TEXT(,))" 
    .Range("A2:A" & lr).FormulaR1C1 = form 
End With 

BTW, TEXT(,) est le même que "".

+0

Y at-il un avantage à utiliser 'TEXT (,)' au lieu de '" "'? – YowE3K

+0

Vous ne devez pas taper '" "" "' que je trouve juste confondre les choses. – Jeeped

+0

Je suppose que c'est une bonne raison. :RÉ – YowE3K