Registriert seit: 01.07.2023
Version(en): Pro Plus 2019
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
Registriert seit: 26.06.2022
Version(en): 2016
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
Registriert seit: 16.08.2020
Version(en): 2019 64bit
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
Registriert seit: 01.07.2023
Version(en): Pro Plus 2019
Danke für die Hilfestellung.
Hab es an meinen Code angepasst.
Registriert seit: 01.07.2023
Version(en): Pro Plus 2019
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
Registriert seit: 16.08.2020
Version(en): 2019 64bit
Hallo,
Kommentarfelder haben keinen automatischen Zeilenumbruch.
Die Zeilenumbrüche wie gehabt manuell im String mitgeben.
Gruß Uwe
Registriert seit: 01.07.2023
Version(en): Pro Plus 2019
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
Registriert seit: 28.08.2022
Version(en): 365
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