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