设置形状中的字体大小

Setting the font size in a shape

我有以下宏,它应该在工作簿的每个 sheet 上创建一个链接到工作簿中特定作品sheet 的框:

Option Explicit

Sub gndhnkl()
    Dim ws As Worksheet
    Dim sh As Shape

    For Each ws In ThisWorkbook.Worksheets
        If InStr(1, ws.Name, "Summering", vbBinaryCompare) <= 0 Then
            For Each sh In ws.Shapes
                sh.Delete
            Next sh
            Call Macro1(ws)
        End If
    Next ws
End Sub

Sub Macro1(ws As Worksheet)

    Dim venstre As Double, topp As Double, breidde As Double, høgde As Double
    Dim sh As Shape

    venstre = ws.Range("B16").Left
    topp = ws.Range("B16").Top
    breidde = 110
    høgde = 68

    Set sh = ws.Shapes.AddShape(msoShapeRoundedRectangle, venstre, topp, breidde, høgde)
    With sh.TextFrame2.TextRange
        .Characters.Text = "Til summering, person"
        .Font.Size = 13
        .ParagraphFormat.Alignment = msoAlignCenter
        .Parent.VerticalAnchor = msoAnchorMiddle
    End With
    ws.Hyperlinks.Add Anchor:=sh, Address:="", SubAddress:=Replace(Summering_person.Range("A1").Address(external:=True), "[" & ThisWorkbook.Name & "]", "", 1, -1, vbBinaryCompare)

End Sub

在大多数情况下,它的工作方式也和我预期的一样,但由于某种原因,添加的形状中的字体大小没有像我预期的那样设置为 13,而是保持为 11。

.Font.Size = 13 (sh.TextFrame2.TextRange.Font.Size = 13) 行似乎没有执行。

我的错误在哪里,我需要做什么才能让宏设置形状的字体大小?

您必须更改顺序,首先设置字体大小(以及任何其他字体属性),然后再编写文本。设置文本后,更改字体会变得更加棘手 - TextFrame 的每个字符都可能具有自己的特征。

  .Font.Size = 13
  .Characters.Text = "Til summering, person"

更新 SJR的评论是对的,当使用TextFrame而不是TextFrame2时,你可以将整个文本的字体属性设置为写完文字后一次。