Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

Thema

Neuer Menüpunkt zum Einfügen eines benutzerdefinierten Kommentars

Gruppe

Button

Problem

Im EINFÜGEN-Menü soll beim Öffnen der Arbeitsmappe ein neuer Menüpunkt Mein Kommentar eingefügt werden, der das Erstellen eines Kommentars ohne vorgegebenen Anwendername an einer Position rechts der aktiven Zelle ermöglicht.

Lösung
Geben Sie den Ereigniscode in das Klassenmodul der Arbeitsmappe ein.

ClassModule: DieseArbeitsmappe

Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Dim oPopUp As CommandBarPopup
   Set oPopUp = Application.CommandBars("Worksheet Menu Bar") _
      .FindControl(ID:=30005)
   On Error Resume Next
   oPopUp.Controls("Mein Kommentar").Delete
   On Error GoTo 0
   Application.DisplayCommentIndicator = _
      ThisWorkbook.Worksheets(1).Range("IV1")
   ThisWorkbook.Worksheets(1).Range("IV1").ClearContents
End Sub

Private Sub Workbook_Open()
   Dim oPopUp As CommandBarPopup
   Dim oBtn As CommandBarButton
   Set oPopUp = Application.CommandBars("Worksheet Menu Bar") _
      .FindControl(ID:=30005)
   On Error Resume Next
   oPopUp.Controls("Mein Kommentar").Delete
   On Error GoTo 0
   Set oBtn = oPopUp.Controls.Add(before:=11)
   With oBtn
      .Caption = "Mein Kommentar"
      .OnAction = "NewComment"
      .FaceId = 2056
      .Style = msoButtonIconAndCaption
   End With
   ThisWorkbook.Worksheets(1).Range("IV1") = _
      Application.DisplayCommentIndicator
   Application.DisplayCommentIndicator = xlCommentIndicatorOnly
End Sub

ClassModule: Tabelle1

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim cmt As Comment
   For Each cmt In Comments
      cmt.Visible = False
   Next cmt
End Sub
StandardModule: basMain

Sub NewComment()
   Dim oBtn As CommandBarButton
   Dim shp As Shape
   Dim lLeft As Long
   lLeft = ActiveCell.Left - 50
   If lLeft < 0 Then lLeft = 0
   Set oBtn = _
      Application.CommandBars.FindControl(ID:=1589)
   oBtn.Execute
   Set oBtn = _
      Application.CommandBars.FindControl(ID:=1593)
   oBtn.Execute
   'On Error Resume Next
   Set shp = ActiveCell.Comment.Shape
   shp.Left = lLeft
   shp.Top = ActiveCell.Top
   shp.Select
End Sub

    

Beiträge aus dem Excel-Forum zu den Themen Menue und Button