我有一个宏,它可以自动将文本框形状插入到图表中,并为该文本框提供正确的文本和字体。虽然它目前可以正常工作,但我希望更好地了解如何在不使用的情况下执行此操作。在文本框形状上选择。.Select
方法允许我包含.ColorIndex
、.Strikethrough
、.Superscript
、但是我被迫把.Textframe2.TextRange.Font.Fill.Forecolor.RGB
放在With Selection块之外来改变颜色。(我当前“更新”文本框的方法删除了图表中所有现有的文本框,并添加了一个新的文本框)。
我试过去掉.Select
,使用“With txt1.Character(Start:=1,Length:=216).Font”,并将所有的意外情况都放在这个With块中,但是某些行出现了错误(我读到过避免使用.Select references是一个好习惯)。
真的只是想更好地理解如何正确有效地使用宏来更新图表中的文本框。
Sub UpdateChart()
Dim chrtobj As ChartObject
Dim txt1 As Shape
Dim cht1 As Chart
Dim wkbk As Workbook
Set wkbk = ActiveWorkbook
Set cht1 = Sheets("Profit & Loss").ChartObjects(1).Chart
On Error Resume Next
For Each chrtobj In Sheets("Profit & Loss").ChartObjects
chrtobj.Chart.TextBoxes.Delete
Next chrtobj
On Error GoTo 0
Set txt1 = cht1.Shapes.AddTextbox(msoTextOrientationHorizontal, 790, 30, 190, 30)
txt1.Line.Visible = msoFalse
txt1.TextFrame.Characters.Text = "Total Rev: $" & Format(Cells(n, "B").Value, "#,###")
txt1.Select
With Selection.Characters(Start:=1, Length:=216).Font
.Size = 18
.ColorIndex = xlAutomatic
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Bold = True
.Italic = True
End With
txt1.TextFrame2.TextRange.Font.Fill.ForeColor.RGB = RGB(84, 130, 53)
End Sub
1条答案
按热度按时间kgsdhlau1#
这个管用。
我已经从代码中删除了
False
和xlAutomatic
值,因为它们是默认值-不需要专门设置它们。此外,当您使用更改ForeColor
-还将
n
替换为7
,因为n
未在Format(Cells(n, "B").Value
中定义