Copier une formule dans un commentaire via une macro

J'essaie de créer une macro pour accélérer un process commun que je dois faire quotidiennement. Sur la feuille de calcul avec laquelle je travaille, il faut parfois replace les formules. Pour être utile à quelqu'un d'autre en regardant la feuille de calcul à une date ultérieure, nous copions la formule originale et entrez-la dans un commentaire, puis mettez en surbrillance la cellule jaune.

(FYI – Je ne peux pas écrire VBA à partir de zéro, mais je suis généralement prêt à utiliser le button de la macro d'logging, puis à modifier de petites parties du VBA si nécessaire).

Mes tentatives actuelles: chaque fois que j'essaie d'entrer un commentaire, il ne tient pas count de ce que j'ai copié, alors je ne peux pas utiliser le button "Formules de présentation" pour copyr la formule.

J'ai essayé d'utiliser F2-> Shift + Home-> Ctrl C pour copyr directement la barre de formule, puis je peux coller dans le commentaire, mais cela copy le text lui-même plutôt que les actions pour get le text … donc isn ' t réutilisable sur d'autres cellules. (La reference relative est activée).

J'ai également essayé de déranger avec le presse-papiers, mais je ne peux pas le faire fonctionner.

La formule qui fait cracher la manière actuelle je le fais via le button d'logging:

Sub Formula_Comment() ' ' Formula_Comment Macro ' ' Keyboard Shortcut: Ctrl+q ' Range("AQ170").Select Range("AQ170").AddComment Range("AQ170").Comment.Visible = False Range("AQ170").Comment.Text Text:= _ "Tom S:" & Chr(10) & "=IF('Visit Schedule (input)'!$X$3="""",0,$AW$60)" Range("AQ170").Select With Selection.Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 65535 .TintAndShade = 0 .PatternTintAndShade = 0 End With End Sub 

Est-ce que quelqu'un a une idée?

  1. La méthode AddComment de la class Range ajoute un commentaire. Pour append le commentaire contenant la formule de la cellule, vous utiliserez cette méthode comme ceci:

    ActiveCell.AddComment ActiveCell.Formula

  2. Si vous souhaitez également avoir votre nom dans le commentaire, vous pouvez l'append en utilisant la propriété UserName de la class Application, comme ceci:

    ActiveCell.AddComment Application.UserName & ":" & Chr(10) & ActiveCell.Formula

  3. Si la cellule a déjà un commentaire, cette méthode échouera et renverra une erreur, il est judicieux de supprimer le commentaire existant avant de créer un nouveau. Vous le feriez avec la méthode ClearComments de la class Range:

    ActiveCell.ClearComments

  4. La cellule peut être colorée en utilisant simplement cette ligne:

    ActiveCell.Interior.Color = 65535

Maintenant, puisque nous avons tout ce dont nous avons besoin, nous pouvons créer un sub :

 Sub Formula_Comment() With ActiveCell .ClearComments .AddComment Application.UserName & ":" & Chr(10) & .Formula .Interior.Color = 65535 End With End Sub 

Notez que nous avons supprimé ActiveCell de la plupart du code, car nous avons décidé d'utiliser With block pour une meilleure lisibilité.

Bon apprentissage! 😉