Kommentar bearbeiten
#1
Hallo an alle.

Ich erstelle wie folgt ein Kommentar über Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Erstellt von: Andreas:
Testkommentar
Erstellt am: 15.06.2024
um: 16:19:04

Code:
strHeader = "Erstellt von: " & Application.UserName & vbLf
Datum = vbLf & "Erstellt am: " & Date
Zeit = vbLf & "um: " & Time
.AddComment (strHeader & Kommentar & Datum & Zeit)
einlesen über
Code:
Kommentar = InputBox("Bitte Kommentar eingeben", "Kommentartext bearbeiten...", ActiveCell.Comment.Text)

Nun meine Frage:
Kann man den eigendlichen Kommentartext (Testkommentar) herrausfiltern um nur diesen zu ändern?
Alle anderen Daten müssten bestehen bleiben.
Eventuell erweitert durch (geändert am/um)

Erstellt von: Andreas:
geändertes Testkommentar
Erstellt am: 15.06.2024
um: 16:19:04
geändert am: 18.06.24
um: 19:20:05

Vielen Dank für Eure Hilfe
Antworten Top
#2
Hi,

ersetz deinen Code durch diesen hier:
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

    Dim strHeader As String, Datum As String, Zeit As String, Kommentar As String
    Dim larstrComm() As String, liIdx As Integer
       
        If Target.Comment Is Nothing Then
                strHeader = "Erstellt von: " & Application.UserName & vbLf
                Datum = vbLf & "Erstellt am: " & Date
                Zeit = vbLf & "um: " & Time
                Kommentar = InputBox("Bitte Kommentar eingeben", "Kommentartext bearbeiten...")
                Target.AddComment (strHeader & Kommentar & Datum & Zeit)
            Else
                larstrComm = Split(Target.Comment.Text, vbLf)
                Kommentar = InputBox("Bitte Kommentar eingeben", "Kommentartext bearbeiten...")
                larstrComm(1) = Kommentar
                Target.Comment.Delete
                    For liIdx = 0 To UBound(larstrComm)
                        strHeader = strHeader & larstrComm(liIdx) & vbLf
                    Next
                Target.AddComment strHeader
        End If

End Sub
Hilfts?

Ciao
Thorsten
Antworten Top
#3
Hallo,
 
was man in ein Kommentarfeld einer Zelle per VBA hineinschreibt ist ein Textstring. 
 
Um jetzt einen bestimmten Begriff (Teilstring) in den Kommentaren zu finden, kann man mit einer For Each / Next Schleife aus dem Range, welcher alle relevanten Kommentarfelder enthält, diesen Textstring mit der instr() Funktion auf >0 prüfen, ob der gesuchte Teilstring "Testkommentar" im String enthalten ist.
 
Damit kommt man an die Kommentarfelder, welche diesen Begriff enthaltenden, ran.
 
Liest sich kompliziert - ist aber nur eine simple Schleife mit Abfrage.
 
Gruß Uwe
Antworten Top
#4
Danke für die Hilfestellung.

Hab es an meinen Code angepasst.
Antworten Top
#5
Kann man die Textlänge automatisch umbrechen, wenn der Text zu lang wird?

Jetzt habe ich es so:

.Comment.Shape.TextFrame.AutoSize = True

Die Höhe müsste sich allerdings automatisch anpassen
Antworten Top
#6
Hallo,
 
Kommentarfelder haben keinen automatischen Zeilenumbruch.
Die Zeilenumbrüche wie gehabt manuell im String mitgeben.
 
Gruß Uwe
Antworten Top
#7
Zeilenumbruch würde ja mit Replace(Kommentar, "#", vbLf) funktionieren,
nur habe ich dann das problem, den Kommentartext wieder vollständig in die Inputbox einzulesen.

Also hat sich dass erledigt.

Danke
Antworten Top
#8
Hi,

dann verwende statt InputBox halt eine eigene Userform. Ist wirklich nicht schwer, so etwas zu erstellen. Das habe sogar ich hinbekommen - und das obwohl ich Userforms eigentlich ablehne.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste