我有以下宏,该宏应在工作簿的每个工作表上创建一个链接到工作簿中某个工作表的框:
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
)。
我的错误在哪里?为了使宏设置形状的字体大小,我需要做什么?
答案 0 :(得分:2)
您必须更改顺序,在编写文本之前首先设置字体大小(和其他字体属性)。设置完文本后,更改字体变得更加棘手-TextFrame的每个字符都可能具有自己的特征。
.Font.Size = 13
.Characters.Text = "Til summering, person"
更新 SJR的注释是正确的,当使用TextFrame
而不是TextFrame2
时,可以将整个文本的字体属性设置为一次。