设置形状的字体大小

时间:2019-06-11 10:16:07

标签: excel vba excel-2016

我有以下宏,该宏应在工作簿的每个工作表上创建一个链接到工作簿中某个工作表的框:

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 = 13sh.TextFrame2.TextRange.Font.Size = 13)。

我的错误在哪里?为了使宏设置形状的字体大小,我需要做什么?

1 个答案:

答案 0 :(得分:2)

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

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

更新 SJR的注释是正确的,当使用TextFrame而不是TextFrame2时,可以将整个文本的字体属性设置为一次。