通过宏将公式复制到注释中

Copy a formula into a comment via macro

我正在尝试创建一个宏来加速我每天需要做的一个常见过程。在我使用的电子表格上,我们有时需要覆盖公式。为了对以后查看电子表格的其他人有所帮助,我们复制原始公式并将其输入到注释中,然后将单元格突出显示为黄色。

(仅供参考 - 我无法从头开始编写 VBA,但我通常可以使用录制宏按钮然后根据需要修改 VBA 的小部分。)

我目前的尝试:每当我尝试输入评论时,它都会忽略我复制的内容,因此我无法使用 "show formulas" 按钮复制公式。

我试过使用 F2->Shift+Home->Ctrl C 直接复制公式栏,然后我可以将其粘贴到评论中,但这复制的是文本本身,而不是获取文本的操作。 .. 所以不能在其他细胞上重复使用。 (启用相对参考)。

我也试过摆弄剪贴板,但无法正常工作。

我通过记录按钮吐出的当前方式的公式:

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="""",0,$AW)"
    Range("AQ170").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

有人知道吗?

  1. Rangeclass的AddComment方法添加注释。要添加包含单元格公式的注释,您可以像这样使用此方法:

    ActiveCell.AddComment ActiveCell.Formula

  2. 如果您还想在评论中加入您的名字,您可以使用应用程序 class 的 UserName 属性 添加它,如下所示:

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

  3. 如果单元格已经有评论,此方法将失败并 return 出错,因此明智的做法是在创建新评论之前删除现有评论。您可以使用范围 class:

    ClearComments 方法来完成

    ActiveCell.ClearComments

  4. 单元格可以只用这一行着色:

    ActiveCell.Interior.Color = 65535

现在,既然我们拥有了所需的一切,我们就可以创建一个 sub:

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

请注意,我们从大部分代码中删除了 ActiveCell,因为我们决定使用 With 块以提高可读性。

祝您学习愉快! ;)