HERBERS Excel-Forum - das Archiv

Thema: Kommentar per VBA in fett und kursiv

Kommentar per VBA in fett und kursiv
GfK-Michael
Hallo Community,

ich habe mir ein Makro in meiner persönlichen Arbeitsmappe erstellt, mit dem ich per Tastendruck (STRG-g) einen Kommentar erstellen kann, den ich für mich sinnvoll formatieren kann. Hierbei wird immer der komplette Text im angegebenen Style formatiert, sowie automatische Größe des Kommentarfeldes. Ausserdem wird der alte Kommentar übernommen - falls vorhanden - und der neue Text in eine neue Zeile geschrieben. Ändern kann ich die Schriftgröße und den Stil (normal, fett, kursiv).

Soweit funktioniert alles, bis auf dessen, dass ich fett und kursiv nicht gleichzeitig verwenden kann, während man auf der normalen Oberfläche einfach beides wählen kann. Der Makrorecorder half mir dabei leider nicht weiter, da der Schriftstil beim Kommentar nicht mit aufgezeichnet wird.

Hier der Code für die Routine vor der Userform:

Public kommalt


Sub Kommentar_einfuegen()
On Error Resume Next
kommalt = ""
kommalt = ActiveCell.Comment.Text
On Error GoTo 0
If kommalt <> "" Then kommalt = kommalt + Chr(10)
Kommentar.Show
End Sub



Und hier der Code aus der Userfom:

Private Sub CommandButton1_Click()

If TextBox1.Value = "" Then Exit Sub
kommneu = kommalt & TextBox1.Value
If Normal.Value = True Then stil = "Normal"
If Fett.Value = True Then fe = "j"
If Kursiv.Value = True Then ku = "j"
gr = Val(TextBox2.Value)
Selection.ClearComments
Selection.AddComment Text:=kommneu
Selection.Comment.Shape.TextFrame.AutoSize = True
If stil <> "" Then Selection.Comment.FontStyle = stil
If fe = "j" Then Selection.Comment.Shape.TextFrame.Characters.Font.FontStyle = "Fett"
If ku = "j" Then Selection.Comment.Shape.TextFrame.Characters.Font.FontStyle = "Kursiv" 'hier liegt das Problem - wähle ich beides, wird nur kursiv in Normalschrift dargestellt
Selection.Comment.Shape.TextFrame.Characters.Font.Size = gr
Kommentar.Hide
Unload Kommentar
End Sub

Private Sub Fett_Change()
If Fett.Value = True Then Normal.Value = False
End Sub

Private Sub Kursiv_Change()
If Kursiv.Value = True Then Normal.Value = False
End Sub

Private Sub Normal_Change()
If Normal.Value = True Then
Fett.Value = False
Kursiv.Value = False
End If
End Sub

Private Sub UserForm_Initialize()
TextBox2.Value = "12"
End Sub


Wie kann ich das bewerkstelligen?

Noch als Bemerkung: ich weiß, dass mein Programmierstil nicht sauber ist, habe mir das aber im Laufe der letzten 25 Jahren angewöhnt.

MfG Michael
AW: Kommentar per VBA in fett und kursiv
RPP63
Moin!
Hast recht, zum Programmierstil schreibe ich mal nix … ;)
Ich ändere einen Kommentar auf fett kursiv wie folgt:
ActiveCell.Comment.Shape.TextFrame.Characters.Font.FontStyle = "Bold Italic"


Gruß Ralf
AW: Kommentar per VBA in fett und kursiv
GfK-Michael
Super - danke. Jetzt funktioniert es.
AW: Kommentar per VBA in fett und kursiv
xlKing
Guten Abend,

Also ich hätte jetzt die beiden Eigenschaften einzeln gesetzt. Das würde den Code wesentlich übersichtlicher machen, weil man auf die Zwischenvariablen in dem Fall verzichten kann.

With ActiveCell.Comment.Shape.TextFrame.Characters.Font

.Italic = Kursiv.Value
.Bold = Fett.Value
.Size = Textbox2.Value
End With


Andererseits gefällt mir der Einzeiler von Ralf auch irgendwie. Dieser hat den Vorteil, dass man seinen Formatierungswunsch direkt im Code hinterlegen kann. Wenn du aber über Auswahl eines Userform gehst, müsstest du das dann erst in den richtigen Text umwandeln, was dann doch wieder einige Zusatzzeilen bedeutet.

Gruß Mr. K.