Excel vba--宏,用于添加新评论并为该评论设置焦点

时间:2018-08-30 22:12:50

标签: excel vba excel-vba

我想模仿带有宏的默认插入注释按钮的行为。我想将所有宏存储在“个人”工作簿中,而不是活动工作簿中。 我希望它只是创建一个注释,然后将焦点设置为该空注释。 以下是我到目前为止的内容,使用Terry的建议对评论.Visible进行评论,然后对.Shape.Select进行评论:

    Sub addNewComment()
    Dim authorName As String
    Dim authorNameLength As Integer

    authorName = Application.UserName
    authorNameLength = Len(authorName)

    ActiveCell.AddComment _
    authorName & ":" _
    & Chr(10)
            With ActiveCell.Comment
                With .Shape
                    .AutoShapeType = msoShapeFoldedCorner
                    .Fill.ForeColor.RGB = RGB(215, 224, 239)
                    With .TextFrame
                        .AutoSize = True
                        .Characters.Font.Size = 11
                        .Characters.Font.Name = "Calibri"
                        .Characters(1, (authorNameLength + 1)).Font.Bold = True
                        .Characters((authorNameLength + 2), 1).Font.Bold = False
                    End With
                End With
                .Visible = True
                .Shape.Select True
            End With
End Sub

我不确定如何获取评论以使其不可见。我是否存储对刚刚添加注释的单元格的引用,然后通过Worksheet_SelectionChange事件引用该单元格?还是让该事件仅隐藏工作表上的所有评论?个人工作簿是否可以完全使用Worksheet_SelectionChange? 另外,在我键入和添加换行符时,我的注释框不会调整大小。我退出后确实会调整大小,但实际上太大了大约四行。不知道为什么会这样。 我确信还有一种更干净的方式来组织With块。

我尝试使用以下内容在选择另一个单元格后再次隐藏评论:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Target.Comment.Visible = False
End Sub

我收到以下错误:

error 91: Object variable or With block variable not set

1 个答案:

答案 0 :(得分:1)

您可以使用以下命令选择可见的注释:

With range("a1")
    .Comment.Visible = True
    .Comment.Shape.Select True
End With

但是我认为一旦取消选择,您将需要另一个宏来再次隐藏注释,否则它将保持可见。您可以尝试在工作表的SelectionChange事件上执行此操作:

 Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Target.Comment.Visible = False
End Sub