簡體   English   中英

更改工作表 VBA Excel 中所有圖表的字體大小

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM