我有下面的宏,它应该创建一个框链接到工作簿中的某个工作表,在工作簿的每个工作表上:
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
)行。
这里我的错误在哪里,我需要做什么才能让宏设置形状的字体大小?
1条答案
按热度按时间vtwuwzda1#
你必须改变顺序,在你写文本之前,首先设置字体大小(和任何其他字体属性)。一旦文本设置好了,改变字体就变得越来越棘手了-TextFrame的每个字符都可能有自己的特点。
字符串
更新SJR的注解是正确的,当使用
TextFrame
而不是TextFrame2
时,您可以在文本写入后将整个文本的字体属性设置为一次。