- 帖子
- 2035
- 主題
- 24
- 精華
- 0
- 積分
- 2031
- 點名
- 0
- 作業系統
- Win7
- 軟體版本
- Office2010
- 閱讀權限
- 100
- 性別
- 男
- 註冊時間
- 2012-3-22
- 最後登錄
- 2024-2-1
|
8#
發表於 2012-4-6 09:08
| 只看該作者
回復 7# GBKEE
小弟將實際在執行的程式碼貼上,敬請各位前輩指導。- Sub setRowColumn() ' 以 Excel -> 插入 -> 折線圖、直條圖 方式一一插入於工作表單內的檢查方式。
- Dim oShape As Shape
- Dim numChart As Integer
- Dim totalRows As Single
-
- numChart = 0
-
- Sheets("統計圖表").Select
- totalRows = Range("B" & Rows.Count).End(xlUp).Row ' 傳回 B 欄所使用儲存格之最後一格之列號
-
- For Each oShape In ActiveSheet.Shapes
- If oShape.Type = 3 Then
- numChart = numChart + 1
-
- Active.Shapes(oShape.Name).Select ' 如果 Shapes 前加上 Active. 執行時會出現 ----> 執行階段錯誤 '424': 此處需要物件
- ' ActiveSheet.ChartObjects(oShape.Name).Activate
-
- ActiveChart.SetSourceData Source:=Range("$B$1:$B$" & totalRows & ", $F$1:$F$" & totalRows & ", $V$1:$V$" & totalRows)
-
- With ActiveSheet.ChartObjects(oShape.Name).Chart
- .Axes(xlCategory).TickLabels.NumberFormatLocal = "hh:mm:ss"
- .Axes(xlCategory).MajorTickMark = xlCategoryScale
- .Axes(xlCategory).TickLabelPosition = xlLow
-
- Cells(Lines, 38).Value = .ChartTitle.Text
- End With
-
- ActiveSheet.Shapes(oShape.Name).Left = Cells(31, 1).Left ' 設定此圖表實際擺放的 X、Y 座標位置。
- ActiveSheet.Shapes(oShape.Name).Top = Cells(31, 1).Top
-
- ActiveChart.ChartArea.Height = 488 ' 將原本設定之高度調至適度位置
- ActiveChart.ChartArea.Width = 900
-
- ActiveChart.SeriesCollection(1).InvertIfNegative = True
- ActiveChart.SeriesCollection(1).InvertColor = RGB(32, 178, 208)
- With ActiveChart.SeriesCollection(1).Format.Fill
- .Visible = msoTrue
- .ForeColor.RGB = RGB(255, 69, 0)
- .Transparency = 0
- .Solid
- End With
- End If
- Next
- End Sub
複製代碼 1. 如果 Shapes 前加上 Active. 執行時會出現 ----> 執行階段錯誤 '424': 此處需要物件
Active.Shapes(oShape.Name).Select ' 如果 Shapes 前加上 Active. 執行時會出現 ----> 執行階段錯誤 '424': 此處需要物件
' ActiveSheet.ChartObjects(oShape.Name).Activate
2A. 如果 Shapes 前拿掉增加之 Active. 執行時
Shapes(oShape.Name).Select
' ActiveSheet.ChartObjects(oShape.Name).Activate
或者是以
' Shapes(oShape.Name).Select
ActiveSheet.ChartObjects(oShape.Name).Activate
方式執行時會出現 ----> 執行階段錯誤 '5': 程序呼叫或引述不正確
2B. 以 2A 模式處理,之後追蹤結果發現問題出在
With ActiveSheet.ChartObjects(oShape.Name).Chart
.Axes(xlCategory).TickLabels.NumberFormatLocal = "hh:mm:ss"
.Axes(xlCategory).MajorTickMark = xlCategoryScale
.Axes(xlCategory).TickLabelPosition = xlLow
Cells(Lines, 38).Value = .ChartTitle.Text
End With
2BA: 如果將其中 Cells(Lines, 38).Value = .ChartTitle.Text Marked起來執行
With ActiveSheet.ChartObjects(oShape.Name).Chart
.Axes(xlCategory).TickLabels.NumberFormatLocal = "hh:mm:ss"
.Axes(xlCategory).MajorTickMark = xlCategoryScale
.Axes(xlCategory).TickLabelPosition = xlLow
' Cells(Lines, 38).Value = .ChartTitle.Text
End With
執行時會出現 ----> 執行階段錯誤 '-2147467259 (80004005)':
Automation 錯誤
無法指出的錯誤
2BB: 如果只將其中第一項 Marked 起來執行
With ActiveSheet.ChartObjects(oShape.Name).Chart
' .Axes(xlCategory).TickLabels.NumberFormatLocal = "hh:mm:ss"
.Axes(xlCategory).MajorTickMark = xlCategoryScale
.Axes(xlCategory).TickLabelPosition = xlLow
Cells(Lines, 38).Value = .ChartTitle.Text
End With
執行時會出現 ----> 執行階段錯誤 '5': 程序呼叫或引述不正確
2BC: 如果只將其中質疑的兩項 Marked 起來執行
With ActiveSheet.ChartObjects(oShape.Name).Chart
' .Axes(xlCategory).TickLabels.NumberFormatLocal = "hh:mm:ss"
.Axes(xlCategory).MajorTickMark = xlCategoryScale
.Axes(xlCategory).TickLabelPosition = xlLow
' Cells(Lines, 38).Value = .ChartTitle.Text
End With
執行起來毫無異樣,似乎是一切正常的樣子。
這或許是我用功仍然不足,尚請指證! |
|