700 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo zusammen,
ich habe folgende Aufgabe. Ich möchte die Kommentare in einem Arbeitsblatt zählen (habe ca. 40 Arb,blätter) und das Ergebnis in einer Zelle ausgeben (Brauche ich, weil ich später in einem Arbeitsblatt (Hauptmenue) alle Kommentare addieren möchte.
Meine Frage ist nun: Gibt es eine Formellösung, um alle Kommentare zu zählen?
Bisher habe ich nur eine VBA-Lösung gefunden (die mir nicht gefällt), die mir aber das Ergebnis nur in einer Msg-Box ausgibt. So kann ich aber die Kommentare der ganzen Arb.blätter nicht addieren. Außerdem muß ich die Abfrage immer manuell auslösen.

Sub Kommentarezaehlen()
Dim Kom As Comment

For Each Kom In ActiveSheet.Comments
i = i + 1

Next
msg = MsgBox("Das blatt enthält " & i & " Kommentare")
End Sub

Vielleicht hilft es ja auch,wenn man das Ergebnis nicht in einer Msg-Box sondern in einer Zelle ausgeben kann (zum dann weiteren addieren). Dann müsste das Ergebnis aber auch immer automatisch erfolgen (auch wenn ein neuer Kommentar dazu gekommen ist.

Danke und Gruß Flodnug

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Flodnug,

die Anzahl der Kommentare in einem Arbeitsblatt kannst du auch einfacher ermitteln:
Range("A1") = ActiveSheet.Comments.Count

Wenn du die Anzahl der Kommentare in einem Arbeitsblatt automatisch ermittlen willst dann baue das das Worksheet_SelectionChande-Ereignis in den betreffenden Arbeitsblättern ein:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1") = ActiveSheet.Comments.Count
End Sub

Allerdings funktioniert die Methode nur, wenn nach dem Einfügen des Kommentars die Zelle gewechselt wird, da das Einfügen oder Löschen eines Kommentars selbst kein Ereignis auslöst.
Willst du das für alle Arbeitsblätter in einer Arbeitsmappe haben, dann kannst du das auch mit dem folgenden Code im VBA-Projekt der Arbeitsmappe lösen:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name <> "Hauptmenue" Then
Range("A1") = ActiveSheet.Comments.Count
End If
End Sub

Damit wird - außer im Arbeitsblatt "Hauptmenue" - in allen Tabellenblättern in der Arbeitsmappe die Anzahl der Kommentare im Arbeitsblatt in die Zelle A1 geschrieben.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,
danke für deine schnelle Antwort.
Deine 2. Lösung klappt prima (jedes Arb.blatt extra zählen).
Dann addiere ich eben alles im Hauptmenue.
Die 3. Lösung, wo er gleich alle Arb.blätter im Hauptmenue zählt, die mir eigentlich lieber wäre, klappt leider nicht.
Wahrscheinlich bin ich zu bl..... den Code an die richtige Stelle einzufügen.
Weder im Arb.blatt "Menü" noch in "Diese Arbeitsmappe" funzt der Code.
Und bevor Du fragen solltest, ja ich habe im Code "Hauptmenue" in "Menü" abgeändert.
Auf alle Fälle nochmal vielen Dank.
Gruß Flodnug
0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo Flodnug,

auch bei der dritten Lösung zählt er nicht alle Arbeitsblätter im Arbeitsblatt "Menü" ;-). Die dritte Lösung erspart dir nur, den Code in jedes Arbeitsblatt zu kopieren. Siehe dazu meine Erläuterung:

Damit wird - außer im Arbeitsblatt "Hauptmenue" - in allen Tabellenblättern in der Arbeitsmappe die Anzahl der Kommentare im Arbeitsblatt in die Zelle A1 geschrieben.


Wenn du automatisch alle Kommentare in der Arbeitsmappe gezählt haben willst, dann füge folgenden Code in das VBA-Projekts des Tabellenblatts "Menü" ein:

Private Sub Worksheet_Activate()
Dim i As Long
Dim lngAnzahl As Long

For i = 1 To ThisWorkbook.Worksheets.Count
lngAnzahl = lngAnzahl + Worksheets(i).Comments.Count
Next i

Range("A1") = lngAnzahl

End Sub


Sobald du das Blatt "Menü" aktivierst, werden alle Kommentare in allen Arbeitsblättern der Arbeitsmappe gezählt und in Zelle A1 geschrieben.
Damit entfällt die Zählerei in den einzelnen Arbeitsblättern.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,
danke für Deine Antwort.
Ja, das ist die Lösung, die ich favorisiere.
Alles Gute und Gruß Flodnug
...