设置形状中的字体大小
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
时,你可以将整个文本的字体属性设置为写完文字后一次。
我有以下宏,它应该在工作簿的每个 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
时,你可以将整个文本的字体属性设置为写完文字后一次。