Kommentarfeld in Excel über Makro formatieren

Hallo,
in meinem Excel 2013 unter Win 10 habe ich ein Makro, welches in einer Zelle einen Kommentar anlegen soll, die Standardgröße verändert, Schriftgröße und -Art verändert.
Ich habe ein Makro mitschreiben lassen, während ich zu Fuß zunächst nur die Größe anders eingestellt habe. Diesen Code habe ich in mein Makro eingebaut.
Ich habe die Zelle markiert, ein Kommentarfeld erstellt und dann das Makro (Aufnahme) gestartet. Das Ergebnis ist:
Range(„N552“).Comment.Text Text:=„hallo“
Selection.ShapeRange.ScaleWidth 1.58, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 1.82, msoFalse, msoScaleFromTopLeft

Diese Anweisung, in mein Makro eingebaut, ergibt in der Zeile „Selection…“ einen Fehler 438, unterstützt die Eigenschaft oder Methode nicht.

was ist hier falsch?

Gruß
Pauli

NACHTRAG: es wäre mir auch geholfen, in Excel für diese Datei alle Kommentarfelder auf ein gewähltes Format einzustellen, also auch für jeden neuen Kommentar. Das würde ich in Excel einstellen, gehört aber nicht auf dieses Brett, weil es kein Makro wäre.

With ActiveSheet.Range(„N552“).Comment
.Text Text:=„hallo“
.Shape.ScaleWidth 1.58, msoFalse, msoScaleFromTopLeft
.Shape.ScaleHeight 1.82, msoFalse, msoScaleFromTopLeft
End With

Gruss
Jamiro

Hier noch als Ergänzung.

Mit ScaleWidth und ScaleHeight wird das Feld skaliert

Willst Du aber, dass das Feld automatisch der Grösse des Textes angepasst wird, benötigst Du AutoSize:
With ActiveSheet.Range(„N552“).Comment
.Text Text:=„hallo“
.Shape.TextFrame.AutoSize = True
End With

oder wenn Du die Werte vorgeben willst:
With ActiveSheet.Range(„N552“).Comment
.Text Text:=„hallo“
.Shape.Width = 100
.Shape.Height = 100
End With

1 Like

Hallo Jamiro,
ganz herzlichen Dank für diese Lösung!! Das klappt ganz ausgezeichnet, wobei ich das auch mit der variablen Zellbeschreibung Cells(Zeile,Spalte) gemacht habe.
Die vorgegebene Schrift „Segoe UI“ kann ich ja noch akzeptieren, aber wenn Du mir schreiben könntest, ob auch die Schriftgröße noch zu ändern wäre, also z.B. von Größe 9 (vorgegeben) auf Größe 7, wäre das super.
Nochmals vielen Dank,
Pauli

With ActiveSheet.Range(„N552“).Comment
.Text Text:=„hallo“
.Shape.TextFrame.Characters.Font.Size = 7
.Shape.TextFrame.Characters.Font.Name = „Arial“
.Shape.TextFrame.Characters.Font.Bold = False 'Falls Fett dann: True
.Shape.TextFrame.AutoSize = True
End With

Oder für alle gleichzeitig:

Sub FitComments()
Dim xComment As Comment
For Each xComment In ActiveSheet.Comments
xComment.Shape.TextFrame.Characters.Font.Size = 12
xComment.Shape.TextFrame.Characters.Font.Name = „Arial“
xComment.Shape.TextFrame.Characters.Font.Bold = True 'Falls nicht Fett dann: False
xComment.Shape.TextFrame.AutoSize = True
Next
End Sub

1 Like

genial !! Herzlichen Dank.