[英]Change font size of all charts in worksheet VBA Excel
我嘗試使用此代碼將選定的幾個圖表從一張紙復制到另一張紙,然后更改所有選定圖表的字體大小。 我可以復制圖表,但是當我嘗試更改字體大小時程序會中斷 - 有人可以幫忙嗎?
Sub arrangeplots()
'Arranges plots in plotspdf in a printable format
Dim OutSht As Worksheet
Dim Chart As ChartObject
Dim PlaceInRange As Range
Set OutSht = ActiveWorkbook.Sheets("plotspdf") '<~~ Output sheet
Set PlaceInRange = OutSht.Range("B2:J21") '<~~ Output location
ActiveSheet.Shapes.Range(Array("Chart 11", "Chart 3", "Chart 4", "Chart 7", "Chart 8")).Select
Selection.Copy
OutSht.Paste PlaceInRange
For Each Chart In Sheets("plotspdf").ChartObjects
With Chart.ChartArea.Format.TextFrame2.TextRange.Font
.Size = 8
End With
Next Chart
'Loop charts
'For Each Chart In Sheets("plots").ChartObjects
'Copy/paste charts
'Chart.Copy
'OutSht.Paste PlaceInRange
'Next Chart
End Sub
請嘗試這種方法:
If Chart.Chart.ChartArea.Format.TextFrame2.HasText Then
Chart.Chart.ChartArea.Format.TextFrame2.TextRange.Font.Size = 8
End If
您的Chart
是幫助迭代的對象。 它的Chart
屬性正是您所需要的。 在這種情況下,建議避免使用Chart
變量。 例如,最好使用Ch
,在這種情況下,我在上面強調的內容會更容易消化,我認為/希望...
上面的一段代碼必須替換你的:
With Chart.ChartArea.Format.TextFrame2.TextRange.Font
.Size = 8
End With
並且請將您的Chart
變量聲明As ChartObject
,而不是Chart
。
除此之外,您的代碼包含一個基於數組的范圍:
ActiveSheet.Shapes.Range(Array("Chart 11", "Chart 3", "Chart 4", "Chart 7", "Chart 8")).Select
'Selection.Copy
為了使用它,無需選擇,無需復制...之后,您的代碼中根本不需要/使用此范圍。 您在該活動形狀的圖表之間進行迭代。 您是否有其他想法供以后使用剪貼板中的圖表?
既然我(現在)明白你打算在后期使用它,它可以不選擇使用,如下所示:
ActiveSheet.Shapes.Range(Array("Chart 11", "Chart 3", "Chart 4", "Chart 7", "Chart 8")).Copy
這是對我有用的解決方案:
'Change font size
For Each Chart In Sheets("plotspdf").ChartObjects
With Chart.Chart.ChartArea.Format.TextFrame2.TextRange.Font
.Size = 8
End With
Next Chart
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.