excel 设置形状中的字体大小

mspsb9vt  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(93)

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

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)行。
这里我的错误在哪里,我需要做什么才能让宏设置形状的字体大小?

vtwuwzda

vtwuwzda1#

你必须改变顺序,在你写文本之前,首先设置字体大小(和任何其他字体属性)。一旦文本设置好了,改变字体就变得越来越棘手了-TextFrame的每个字符都可能有自己的特点。

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

字符串

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

相关问题