顯示具有 ChartObjects 標籤的文章。 顯示所有文章
顯示具有 ChartObjects 標籤的文章。 顯示所有文章

2025年2月25日 星期二

VBA:ChartObjects X軸 文字設定(ActiveChart.Axes(xlCategory))

設置圖表1的X軸標籤的文字大小

ActiveSheet.ChartObjects("圖表 1").Activate

 With ActiveChart.Axes(xlCategory).TickLabels.Font

    .Size = 12 ' 設置字體大小為 12

End With

修改標籤的標題文字大小、字體、顏色

With ActiveChart.ChartTitle.Font

    .Name = "Arial" ' 字體名稱

    .FontStyle = "Bold" ' 字體樣式

    .Size = 14 ' 字體大小

    .Color = RGB(255, 0, 0) ' 字體顏色

End With

其他常見的修改與方式:

'修改字體種類

ActiveChart.Axes(xlCategory).TickLabels.Font.Name = "Arial"

'粗體

ActiveChart.Axes(xlCategory).TickLabels.Font.Bold = True

'斜體

ActiveChart.Axes(xlCategory).TickLabels.Font.Italic = True

'底線

ActiveChart.Axes(xlCategory).TickLabels.Font.Underline = xlUnderlineStyleSingle


2023年10月24日 星期二

office 還是新的比較好 (CHARTOBJECT 物件給我出現-2147024809 )


這幾天透過老電腦的office 2007來協助跑spc資料

發現有群組物件的圖形物件gigi了(chartobject)
認了
軟體這玩意還是要定期交保護費
才能一路暢通
不然就要用舊元件重作一次,粉累



圖1.錯誤訊息

圖2.發現為物件錯誤
說明:左上角直接變為"群組6"物件了
圖3.office 2010
說明:左上角為"圖形 4"物件

或許這就是相容性物件八,以後還是要多注意這類bug





 

2023年9月2日 星期六

vba:圖表位置調整與大小調整

之前發了幾篇畫圖跟更新圖表資料的文章,尚未調整圖表位置與調整圖表大小,

小編整理一個簡單的副程式, 設置好chart_name後

即可控制想要調整哪一張圖,在那一個儲存格位置

Sub chart_position_resize(chart_name,target_local)

    ActiveSheet.ChartObjects(chart_name).Activate

    With ActiveChart.Parent

        .Left = ActiveSheet.Range(target_local).Left

        .Width = 375

        .Top = ActiveSheet.Range(target_local).top

        .Height = 225

    End With

End Sub




vba:圖表資料更新 周末小磨練一下

        小編這幾天想,一直自動畫圖好像還缺了啥,所以思索了一下,圖都在那了不如變成更新圖的資料的做法,補足這塊的不足,再者效率比重新生成物件來的更快,然後圖的格式也不用重新設定了。

小編目前掌有兩種方式可以更新圖面資料,

第一種:

透過  Formula 方式丟入資料組所在位置,來更新資料。

此種方法簡單不複雜。

例如要更新圖表3的第一條線的資料,資料來源在工作表1上的j2:j203,資料x軸標籤在f2:f203上,可以這樣寫,vba如下 msdn

ActiveSheet.ChartObjects("圖表9").Activate

 ActiveChart.FullSeriesCollection(1).Formula = "=SERIES(,'工作表1'!$J$2:$J$203,'工作表1'!$F$2:$F$203,2)"

圖1.執行後圖表設定 

第一種加強版:

接下去看來看看,如果今天學會了set的技巧,我們可以這樣做:

'透過set 設置使用的儲存格範圍

Set myrange_y = ActiveSheet.Range("f2:f203")

Set myrange_x = ActiveSheet.Range("j2:j203")

'透過SetSourceData 設置使用的儲存格範圍

ActiveSheet.ChartObjects("圖表 9").Chart.SetSourceData Source:=myrange_y

'x軸標籤透過Chart.SeriesCollection(1).XValues設置使用的儲存格範圍

ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).XValues = myrange_x

圖2.執行後圖表設定

第二種:MSDN

直接丟資料組"資料"給圖形物件,來更新資料,很簡單,拿掉set 即可,語法相當單一

如下:

myrange_y = ActiveSheet.Range("f2:f20")

myrange_x = ActiveSheet.Range("j2:j20")

ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).XValues = myrange_x

ActiveSheet.ChartObjects("圖表 9").Chart.SeriesCollection(1).Values = myrange_y

圖2.圖表資料
說明:點選excel上的輸入函數的地方,會發現資料呈現跟前敘方式不同。


 




2023年2月19日 星期日

VBA:懶人畫圖法 (使用Shapes 物件、AddChart方法、ChartArea與SeriesCollection物件等)

 有多懶,設定資料來源,尺標來源後,就可以畫圖了,就是這樣懶。

1.首先資料長這樣,目標為a與b行


2.設定程式碼:

    X_VALUE、Y_VALUE

               SET  X_VALUE= ActiveSheet.Range("A1:A10") '設定這裡為x軸

                SET  Y_VALUE= ActiveSheet.Range("B1:B10")   '設定這裡為y軸    

3.插入以下CHART_DO的code,例如,作一個按鈕如下。

4.副程式:

SUB CHART_DO()

temp1 ="TEST"

               SET  X_VALUE= ActiveSheet.Range("A1:A10") '設定這裡為x軸

                SET  Y_VALUE= ActiveSheet.Range("B1:B10")   '設定這裡為y軸             

                ymAXAX = Application.Max(Y_VALUE)

                yMINAX = Application.Max(Y_VALUE)

                 ActiveSheet.Shapes.AddChart.Select

                 Set ch = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)                

                 ch.Name = temp1                 

                 If ActiveChart.SeriesCollection.Count > 0 Then

                        ActiveChart.ChartArea.ClearContents                 

                 End If                 

                ActiveChart.SeriesCollection.NewSeries

                ActiveChart.SeriesCollection(1).Values = Y_VALUE

                 ActiveChart.SeriesCollection(1).ChartType = xlLine      '畫折線圖 圖形種類GOOGLE           

                ActiveChart.SeriesCollection(1).Name = temp1                

                ActiveChart.SeriesCollection(1).XValues = X_VALUE


     With ActiveSheet.ChartObjects(ch.Name).Chart.Axes(xlValue)

                         .MinimumScale = yMINAX 

                        .MaximumScale = ymAXAX 

                 End With

END SUB

'缺點,沒有控制位置 哈。

基本上就是先不管資料先新增一張圖,然後清除所有資料後,再來新增要的資料,繪製成圖。



指數變化(2025.08.29) 開始透過AI做整理

 指數變化(2025.08.29) 開始透過AI做整理 上周焦點: 8/19(二)   美國房屋開工率 5%月增  美國建築許可月增率 月增2.8% 8/20(三)   美國房貸綜合指數 月減0.5%  美國30年期房貸利率 6.69%  美國15年期房貸利率 5.8~5.71%...