Anzeige
Archiv - Navigation
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Textformat

Textformat
08.05.2008 12:33:37
Ralf_P
Hallo,
wie muss denn der Code lauten, um den letzten Eintrag im Kommentar Fett darzustellen?
Mit Format(Target.Value, "Font.Bold") geht es offensichtlich nicht.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cmt As Comment
Dim sCmt As String
If Target.Address = "$A$1" Then Exit Sub
sCmt = Application.UserName & " - " & _
Format(Now, "dd.mm.yy hh:mm") & " - " & _
Format(Target.Value, "Font.Bold")
If Not Target.Comment Is Nothing Then
sCmt = Target.Comment.Text & vbLf & sCmt
Target.Comment.Delete
End If
Set cmt = Target.AddComment(sCmt)
cmt.Shape.TextFrame.AutoSize = True
End Sub


Gruß Ralf

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Kommentar Text fett formatieren
08.05.2008 12:48:00
Reinhard
Hi Ralf,
bei dir wahrscheinlich so in etwa als Ansatz:

With cmt.Shape.TextFrame
.Characters.Font.name = "Arial"
.Characters.Font.Size = "12"
.Characters.Font.Bold = False
.Characters(0, Len(Application.UserName) + 2).Font.Bold = True
End With


Weiteres zu Kommentarbearbeitung: http://clever-forum.de/read.php?11,110540,112379
Gruß
Reinhard

AW: Kommentar Text fett formatieren
08.05.2008 13:49:53
Ralf_P
Hallo Reinhard,
wäre so möglich, wenn ich den UserName Fett haben wollte.
Es soll aber der letzte Eintrag (& Target.Value) fett werden.
Da bei jeder Zelländerung ein neuer Eintrag in den Kommentar hinzugeschrieben wird,
müßte ich evtl. über
.Characters(InStr(1, sCmt, "-", 0), Len(Target.Value) + 2).Font.Bold = True
das letzte "-" ermitteln.
InStr zählt aber immer von links und nicht von rechts.
Bin mir noch nicht sicher, wie ich das löse.
Gruß Ralf

Anzeige
AW: Kommentar Text fett formatieren
08.05.2008 13:57:00
Reinhard
Hallo Ralf,
seit XL2000 gibts dafür InStrRev
Gruß
Reinhard

AW: Kommentar Text fett formatieren
08.05.2008 14:19:00
Ralf_P
Hallo Reinhard,
das ist es. DANKE! Hab ich nicht gewusst.
Hier der funktionierende Code für alle Sammler :-)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cmt As Comment
Dim sCmt As String
If Target.Address = "$A$1" Then Exit Sub
sCmt = Application.UserName & " - " & _
Format(Now, "dd.mm.yy hh:mm:ss") & " - " & Target.Value
If Not Target.Comment Is Nothing Then
sCmt = Target.Comment.Text & vbLf & sCmt
Target.Comment.Delete
End If
Set cmt = Target.AddComment(sCmt)
cmt.Shape.TextFrame.AutoSize = True
With cmt.Shape.TextFrame
.Characters.Font.Name = "Arial"
.Characters.Font.Size = "8"
.Characters.Font.Bold = False
.Characters(InStrRev(sCmt, "-"), Len(Target.Value) + 2).Font.Bold = True
End With
End Sub


Gruß Ralf

Anzeige
AW: Kommentar Text fett formatieren
08.05.2008 14:02:47
Renee
Hi Ralf,
Ist das wirklich so schwierig (bei VBA gut) ?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim cmt As Comment
Dim sCmt As String
Dim lLen As Long
If Target.Address = "$A$1" Then Exit Sub
lLen = Len(Target.Value)
sCmt = Application.UserName & " - " & _
Format(Now, "dd.mm.yy hh:mm") & " - " & Target.Value
If Not Target.Comment Is Nothing Then
sCmt = Target.Comment.Text & vbLf & sCmt
Target.Comment.Delete
End If
Set cmt = Target.AddComment(sCmt)
With cmt.Shape.TextFrame
.Characters(Len(sCmt) - lLen, Len(sCmt)).Font.Bold = True
.AutoSize = True
End With
End Sub


GreetZ Renée

Anzeige
Hi Renée - manchmal schon :-) - oT
08.05.2008 14:27:20
Ralf_P

Letzte Zeile des Kommentars fett formatieren
08.05.2008 14:32:52
NoNet
Hallo Ralf,
aufbauend auf Reinhards Code kann ich Dir eine Lösung anbieten, die die letzte Zeile des Komentarfeldes fett formatiert :


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cmt As Comment
    Dim sCmt As String
    Dim sCom As String
    If Target.Address = "$A$1" Then Exit Sub
    sCmt = Application.UserName & " - " & _
        Format(Now, "dd.mm.yy hh:mm") & " - " & _
        Format(Target.Value, "Font.Bold")
    If Not Target.Comment Is Nothing Then
        sCmt = Target.Comment.Text & vbLf & sCmt
        Target.Comment.Delete
    End If
    Set cmt = Target.AddComment(sCmt)
    sCom = Split(sCmt, vbLf)(UBound(Split(sCmt, vbLf))) 'Letzte Zeile des Kommentars ermitteln
    With cmt.Shape.TextFrame
        .AutoSize = True
        .Characters(1, Len(sCmt)).Font.Bold = False 'kompletten Text NICHT fett
        .Characters(Len(sCmt) - Len(sCom), Len(sCmt)).Font.Bold = True 'Letzte Zeile Fett
    End With
End Sub


Ich habe allerdings nicht getestet, wie das aussieht, wenn > 255 Zeichen enthalten sind, da die Methode .Characters da meiner Meinung nach nicht mehr funktioniert ?!?!?
Teste das doch bitte mal aus.
Gruß, NoNet

Anzeige
AW: Letzte Zeile des Kommentars fett formatieren
08.05.2008 14:58:00
Ralf_P
Hallo NoNet,
erstmal Danke.
Alle 3 bisher besprochenen Code-Varianten funktionieren (auch bei größer 255 Zeichen).
Allerdings wird bei Deiner Variante die komplette letzte Zeile fett formatiert und nicht wie gewünscht nur der Eintrag hinter dem letzten "-".
Gruß Ralf

OK, das hatte ich falsch verstanden !
08.05.2008 15:10:00
NoNet
Hallo Ralf,
ich hatte verstanden, dass die komplette letzte Zeile fett formatiert werden sollte !
Jetzt, beim nochmaligen durchlesen Deiner Anfrage habe ich registriert, dass nur der geänderte Text fett formatiert werden sollte !
Hier der passende Code :


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim cmt As Comment
    Dim sCmt As String
    Dim sCom As String
    Dim sDatum As String
    If Target.Address = "$A$1" Then Exit Sub
    sDatum = Format(Now, "dd.mm.yy hh:mm")
    sCmt = Application.UserName & " - " & _
        sDatum & " - " & _
        Format(Target.Value, "Font.Bold")
    If Not Target.Comment Is Nothing Then
        sCmt = Target.Comment.Text & vbLf & sCmt
        Target.Comment.Delete
    End If
    Set cmt = Target.AddComment(sCmt)
    sCom = Split(sCmt, vbLf)(UBound(Split(sCmt, vbLf))) 'Letzte Zeile des Kommentars ermitteln
    sCom = Mid(sCom, InStr(sCom, sDatum) + 15)
    With cmt.Shape.TextFrame
        .AutoSize = True
        .Characters(1, Len(sCmt)).Font.Bold = False 'kompletten Text NICHT fett
        .Characters(Len(sCmt) - Len(sCom), Len(sCmt)).Font.Bold = True 'Letzte Zeile Fett
    End With
End Sub


Es wird alles nach dem Datum der letzten Änderung fett formatiert !
Salut, NoNet

Anzeige
AW: OK, das hatte ich falsch verstanden !
08.05.2008 16:17:09
Ralf_P
Hallo NoNet,
das sieht sehr gut aus. Vor allem bietet sich die Möglichkeit über die Suche nach dem Zeilenumbruch in jeder Zeile die Werte nach dem Datum fett zu formatierenund nicht nur in der letzten.
Vielen Dank
Gruß Ralf

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige