2017-09-19 5 views
0

J'ai déjà trouvé la réponse comment AJOUTER des caractères aux formules existantes. Ici j'ajoute "/ 1000" à la fin des formules existantes dans une gamme O31: R36.Modifier plusieurs formules dans une plage dans Excel

Sub formatCells() 
    For Each cell In Worksheets("Comparison").Range("O31:R36") 
     cell.Formula = cell.Formula & "/1000" 
    Next cell 
End Sub 

Le problème se pose lorsque j'essaie de créer une macro pour annuler les modifications. J'essaie d'utiliser la méthode SendKeys mais avec de mauvais résultats. Ce bloc de code ouvre Object Browser dans VBA lorsque je voulais simuler l'appui sur F2 dans la feuille de calcul Excel. Alors, comment pourrais-je l'obtenir pour envoyer des clés à la feuille de calcul? J'utilise Excel 2010.

Sub unFormatCells() 
    For Each cell In Worksheets("Comparison").Range("O31:R36") 
     ActiveCell.Application.SendKeys "{F2}" 
     ActiveCell.Application.SendKeys "{BS 5}" 
    Next cell 
End Sub 
+1

Vous ne pouvez pas utiliser l'undo-commande sur tout ce que vous avez fait avec VBA. – FunThomas

+0

Vous ne pouvez pas le faire comme ça. Vous devez modifier la chaîne de formule elle-même. – serakfalcon

+0

Je sais que je ne peux rien annuler avec VBA. C'est exactement la raison pour laquelle je veux créer une macro qui rétablit les formules telles qu'elles étaient, juste au cas où. @serakfalcon, comment puis-je avoir accès à la chaîne de formule? – Samppa

Répondre

0

Solution:

Sub unFormatCells()  
    For Each cell In Worksheets("Comparison").Range("O31:R36") 
     cell.Formula = Replace(cell.Formula, "/1000", "") 
     cell.NumberFormat = "#,##0" 
    Next cell 
End sub