2017-08-21 2 views
0

J'ai le tableau ci-dessous dans le mot que je suis en train d'écrire un script pour remplacer le contenu de la cellule ci-dessous avec un paiement de client différent (par exemple remplacer le £ 1,100 avec £ 2000). Ci-dessous un extrait de mon script mais quand j'écris à la cellule il perd tout le formatage et la liste numérotée.scripts VBA pour remplacer la valeur cellulaire et garder le formatage

Comment puis-je conserver remplacer les données de cellule avec des données très similaires et garder encore la mise en forme?

ps. J'ai simplifié le contenu de la cellule pour le rendre plus facile à lire, de sorte que le code ne sera pas applicable exactement que le contenu

Before After

DescPlan = Trim(t1.Cell(2, 2).Range.Text) 
DescTest = InStr(1, DescPlan, ":") 
finalString = Left(DescPlan, DescTest) 

t1.Cell(2, 2).Range.Text = Replace(DescPlan, finalString, "Payment by the customer of " + Format(v, "Currency") + " will be due upon completion of items below:") 
+1

Au lieu de remplacer le tout, pourquoi ne pas simplement remplacer la valeur du montant en devise? – dwirony

+0

Comment est-ce lié à Microsoft Word? Pouvez-vous expliquer un peu plus? –

+0

@dwirony comment irais-je faire ça? Parce que vous ne pouviez pas faire de remplacement car la valeur de £ 1,100 pourrait être différente dans chaque ligne de la table à laquelle je l'applique. –

Répondre

0

Je ne sais pas si cela aide, mais vous utilisez une table donc ce qui fonctionne pour Excel devrait également fonctionner pour vous.

Sub replace_keep_format() 

Dim t1 As Range 
Dim sStrng As String, rStrng As String 
Dim i As Integer 

sStrng = "£1,100" 
rStrng = "£2,000" 
i = 1 

Do Until ThisWorkbook.Sheets(1).Range("a" & i) = "" 
Set t1 = ThisWorkbook.Sheets(1).Range("a" & i) 
t1 = Replace(Expression:=t1, Find:=sStrng, Replace:=rStrng) 
i = i + 1 
Loop 

End Sub