简单的VBA显示/隐藏Excel注释问题

时间:2013-09-25 20:35:34

标签: excel vba excel-vba comments

这给了我更多的麻烦。

我对excel电子表格发表了评论。我有一个按钮。当用户单击该按钮时,应显示注释。当他们再次点击它时,评论应该消失。这是我正在尝试使用的代码 - 它们都是独立工作的,但是当我输入If Then Else语句时,无论我尝试什么,都会出错:

Sub showcomments()

If Comments <> "Visible" Then Application.DisplayCommentIndicator = xlCommentAndIndicator
Else: Application.DisplayCommentIndicator = xlCommentIndicatorOnly
End If

End Sub

我已经尝试了间距,缩进等所有变体。如果评论=可见,我已经尝试过了。什么似乎都没有用于什么应该是一个如此简单的任务。我经常得到错误“否则没有”,尽管它就在那里。

谢谢:)

4 个答案:

答案 0 :(得分:3)

试试这个:

   Sub showcomments()
   Comments = 1
   For Each MyComments In ActiveSheet.Comments
       If MyComments.Visible = True Then
           Comments = 0
       End If
   Next
   If Comments = 1 Then
       Application.DisplayCommentIndicator = xlCommentAndIndicator
   Else
       Application.DisplayCommentIndicator = xlCommentIndicatorOnly
   End If
End Sub

答案 1 :(得分:3)

我想自己在Excel中这样做。如果我没有弄错的话,这对你想要的东西来说非常好,并且不需要循环或额外的全局变量......

Sub showcomments()
  If Application.DisplayCommentIndicator = xlCommentIndicatorOnly Then
    Application.DisplayCommentIndicator = xlCommentAndIndicator
  Else
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
  End If
End Sub

答案 2 :(得分:0)

此方法使用全局变量,而不必遍历所有注释。

Public comments As Integer

Sub showcomments()
 If comments = 1 Then
   Application.DisplayCommentIndicator = xlCommentAndIndicator
   comments = 0
  Else
    Application.DisplayCommentIndicator = xlCommentIndicatorOnly
    comments = 1
  End If
End Sub

答案 3 :(得分:0)

我使用了另一种我认为更容易的方法:

Sub Show_Hide_Comments(visible As Boolean)
  Dim cmnt As Comment
   For Each cmnt In ActiveSheet.comments
       cmnt.Shape.Visible = visible
   Next
End Sub

这将查找所有注释并隐藏其形状。 如果愿意,您甚至可以针对某些评论单独进行操作。