Probleme mit Auslesen von Kommentaren

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von blgUcjnl.

    Probleme mit Auslesen von Kommentaren

    Hallo zusammen,

    ich brauche mal eure Hilfe. Mit dem Code unten sollen alle Kommentare auf der betroffenen Seite ausgelesen und untereinander sortiert auf einem anderen Tabellenblatt kopiert werden.
    Jetzt zum Problem: Ich habe jetzt auf der Seite auch Kommentare die nicht ausgelesen weerden sollen. Er soll nur die Kommentare auslesen aus der Range (Set adr = .Range(.Cells(3, 8), .Cells(3, 33)))
    Ich weiß aber nicht wie ich die Zeile (For Each cmtDieser In wksMitKommentaren.Comments) umschreiben muss. Egal was ich versucht habe, ich bekomme immer Fehlermeldungen, haupotsaächlich Fehler 1004.
    Bin noch Anfänger im Bereich VBA, hoffe ihr habt eine Idee. Danke schonmal im vorraus


    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wksMitKommentaren As Worksheet 'die Tabelle mit Kommentaren
    Dim wksAusdruck As Worksheet 'die Tabelle zum Auflisten der Kommentare
    Dim cmtDieser As Comment 'ein Kommentar
    Dim lngZeile As Long
    Dim adr As Range
    Dim a1 As Long

    Set wksMitKommentaren = ActiveSheet
    Set wksAusdruck = ThisWorkbook.Worksheets("Ereignisse")

    With wksMitKommentaren
    Set adr = .Range(.Cells(3, 8), .Cells(3, 33))
    End With

    wksMitKommentaren.Activate

    With wksAusdruck 'Titelzeile schreiben:
    lngZeile = 2
    .Cells(lngZeile, 1).Value = "Datum"
    .Cells(lngZeile, 2).Value = "Ereigniss"
    .Rows(lngZeile).Font.Bold = True 'Titelzeile fett machen

    For Each cmtDieser In wksMitKommentaren.Comments 'alle Kommentare durchlaufen und in neuer Tabelle auflisten
    lngZeile = lngZeile + 1
    a1 = cmtDieser.Parent.Column
    .Cells(lngZeile, 1).Value = "Monat: " & wksMitKommentaren.Name & " // Tag: " & wksMitKommentaren.Cells(6, a1).Value
    .Cells(lngZeile, 2).Value = cmtDieser.Text
    Next
    End With

    End Sub
    Folgendes funktioniert bei mir:

    Mit nachfolgendem Code lassen sich die Kommentare zu jeder einzelnen Spalte der Tabelle mit Kommentaren auf jeweils ein neues Tabellenblatt "Kommentare_Spalte_C" usw. schreiben:

    Tabellenname und Spalte sind vor der Ausführung des Makros entsprechend anzupassen.

    Visual Basic-Quellcode

    1. Sub KommentareInNeuesBlattSchreiben()
    2. Dim wksMitKommentaren As Worksheet 'die Tabelle mit Kommentaren
    3. Dim wksAusdruck As Worksheet 'die Tabelle zum Ausdrucken
    4. Dim cmtDieser As Comment 'ein Kommentar
    5. Dim lngZeile As Long
    6. Dim WatchRange As Range
    7. Set wksMitKommentaren = ActiveSheet 'Achtung, vorher merken, weil neues Blatt kommt
    8. Set wksAusdruck = ThisWorkbook.Worksheets.Add() 'macht eine neue Tabelle
    9. ActiveSheet.Name = "Kommentare_Spalte_C" 'Tabellenname passend zur Spalte ändern
    10. Set WatchRange = wksMitKommentaren.Range("C:C") 'nacheinander Tabellenspalte ändern
    11. With wksAusdruck
    12. 'Titelzeile schreiben:
    13. lngZeile = 1
    14. .Cells(lngZeile, 1).Value = "Adresse1" 'vor jeden führenden Punkt wird wksAusdruck gesetzt wegen "With"
    15. .Cells(lngZeile, 2).Value = "Adresse2"
    16. .Cells(lngZeile, 3).Value = "Zellwert"
    17. .Cells(lngZeile, 4).Value = "Kommentar"
    18. .Cells(lngZeile, 5).Value = "Transparenz"
    19. .Rows(lngZeile).Font.Bold = True 'Titelzeile fett machen
    20. For Each cmtDieser In wksMitKommentaren.Comments
    21. If Not Intersect(cmtDieser.Parent, WatchRange) Is Nothing Then
    22. lngZeile = lngZeile + 1
    23. .Cells(lngZeile, 1).Value = "A" & lngZeile
    24. .Cells(lngZeile, 2).Value = cmtDieser.Parent.AddressLocal
    25. .Cells(lngZeile, 3).Value = cmtDieser.Parent.Value
    26. .Cells(lngZeile, 4).Value = cmtDieser.Text
    27. .Cells(lngZeile, 5).Value = cmtDieser.Shape.Fill.Transparency
    28. End If
    29. Next
    30. End With
    31. End Sub


    Mit nachfolgendem Code lassen sich die Hyperlinks in die Tabelle mit den Kommentaren schreiben:

    In der Tabelle mit den Kommentaren ist manuell jeweils eine leere Spalte für die Hyperlinks einzufügen, weil beim Einfügen der Hyperlinks der Zelleninhalt überschrieben wird. Die Adresse2 in der Tabelle "Kommentare_Spalte_C" usw. ist vor der Ausführung des Makros entsprechend anzupassen.

    Visual Basic-Quellcode

    1. Sub HyperlinkaufandereTabelleeinfügen()
    2. 'Tabellenname passend zu Spalte ändern
    3. Dim lngZeile As Long
    4. With Worksheets("Kommentare_Spalte_C")
    5. For lngZeile = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
    6. Range(CStr(Sheets("Kommentare_Spalte_C").Cells(lngZeile, 2))).Select
    7. ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:="" & "Kommentare_Spalte_C!" & CStr(Sheets("Kommentare_Spalte_C").Cells(lngZeile, 1)) _
    8. , TextToDisplay:=CStr(Sheets("Kommentare_Spalte_C").Cells(lngZeile, 1))
    9. Next
    10. End With
    11. End Sub


    Werden diese beiden Module in der PERSONAL.XLSB gespeichert ist eine kleine Änderung erforderlich:

    Visual Basic-Quellcode

    1. Set wksAusdruck = ThisWorkbook.Worksheets.Add() 'macht eine neue Tabelle
    muss durch

    Visual Basic-Quellcode

    1. Set wksAusdruck = ActiveWorkbook.Worksheets.Add() 'macht eine neue Tabelle
    ersetzt werden.

    Mit nachfolgendem Code lassen sich die Kommentare zu jeder einzelnen Spalte der Tabelle mit Kommentaren auf jeweils ein neues Tabellenblatt "Kommentare_Spalte_C" usw. schreiben:

    Tabellenname und Spalte sind vor der Ausführung des Makros entsprechend anzupassen.

    Visual Basic-Quellcode

    1. Sub KommentareInNeuesBlattSchreiben()
    2. Dim wksMitKommentaren As Worksheet 'die Tabelle mit Kommentaren
    3. Dim wksAusdruck As Worksheet 'die Tabelle zum Ausdrucken
    4. Dim cmtDieser As Comment 'ein Kommentar
    5. Dim lngZeile As Long
    6. Dim WatchRange As Range
    7. Set wksMitKommentaren = ActiveSheet 'Achtung, vorher merken, weil neues Blatt kommt
    8. Set wksAusdruck = ActiveWorkbook.Worksheets.Add() 'macht eine neue Tabelle
    9. ActiveSheet.Name = "Kommentare_Spalte_C" 'Tabellenname passend zur Spalte ändern
    10. Set WatchRange = wksMitKommentaren.Range("C:C") 'nacheinander Tabellenspalte ändern
    11. With wksAusdruck
    12. 'Titelzeile schreiben:
    13. lngZeile = 1
    14. .Cells(lngZeile, 1).Value = "Adresse1"
    15. 'vor jeden führenden Punkt wird wksAusdruck gesetzt wegen "With"
    16. .Cells(lngZeile, 2).Value = "Adresse2"
    17. .Cells(lngZeile, 3).Value = "Zellwert"
    18. .Cells(lngZeile, 4).Value = "Kommentar"
    19. .Cells(lngZeile, 5).Value = "Transparenz"
    20. .Rows(lngZeile).Font.Bold = True 'Titelzeile fett machen
    21. For Each cmtDieser In wksMitKommentaren.Comments
    22. If Not Intersect(cmtDieser.Parent, WatchRange) Is Nothing Then
    23. lngZeile = lngZeile + 1
    24. .Cells(lngZeile, 1).Value = "A" & lngZeile
    25. .Cells(lngZeile, 2).Value = cmtDieser.Parent.AddressLocal
    26. .Cells(lngZeile, 3).Value = cmtDieser.Parent.Value
    27. .Cells(lngZeile, 4).Value = cmtDieser.Text
    28. .Cells(lngZeile, 5).Value = cmtDieser.Shape.Fill.Transparency
    29. End If
    30. Next
    31. End With
    32. End Sub


    Mit nachfolgendem Code lassen sich die Hyperlinks in die Tabelle mit den Kommentaren schreiben:

    In der Tabelle mit den Kommentaren ist manuell jeweils eine leere Spalte für die Hyperlinks einzufügen, weil beim Einfügen der Hyperlinks der Zelleninhalt überschrieben wird. Die Adresse2 in der Tabelle "Kommentare_Spalte_C" usw. ist vor der Ausführung des Makros entsprechend anzupassen.

    Visual Basic-Quellcode

    1. Sub HyperlinkaufandereTabelleeinfügen()
    2. 'Tabellenname passend zu Spalte ändern
    3. Dim lngZeile As Long
    4. With Worksheets("Kommentare_Spalte_C")
    5. For lngZeile = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
    6. Range(CStr(Sheets("Kommentare_Spalte_C").Cells(lngZeile, 2))).Select
    7. ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="",
    8. SubAddress:="" & "Kommentare_Spalte_C!" &
    9. CStr(Sheets("Kommentare_Spalte_C").Cells(lngZeile, 1)) _
    10. , TextToDisplay:=CStr(Sheets("Kommentare_Spalte_C").Cells(lngZeile, 1))
    11. Next
    12. End With
    13. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „blgUcjnl“ ()