返回列表 上一主題 發帖

[發問] 動態修正匯入圖表的最後資料列之列數所延伸的問題

回復 9# GBKEE
不知道您有看到我船上的檔案嗎?

TOP

回復 11# c_c_lai


    你是要讓你的圖表一直維持所有資料嗎
   只要有新資料圖表就要包含那各資料?
    如果是應該用定義名稱做就好比較方便吧
字典兩各字 還真難理解

TOP

回復  c_c_lai
語法錯誤    Active.Shapes(oShape.Name).Select                     
正確           A ...
GBKEE 發表於 2012-4-6 09:22

不好意思
ActiveSheet 打成Active
我改一下
Alex

TOP

回復 13# alexliou
謝謝您! 我會更正測試看看。
但除此之外的所提問錯誤訊息,不知有解否 ?
檔案我再附上一次,麻煩幫我看看是哪裡有錯,謝謝您!
成交價與成交量.rar (39.68 KB)

TOP

回復 13# alexliou
對不起,我沒留意到您無法下載,我把程式碼附上,
剛才使用 ActiveSheet.Shapes() 執行就 OK 了,
然而 Automation 錯誤 以及 程序呼叫或引述不正確 尚未能解決,要麻煩您了!
  1. Sub setRowColumn()  ' 以 Excel -> 插入 -> 折線圖、直條圖 方式一一插入於工作表單內的檢查方式。
  2.     Dim oShape As Shape
  3.     Dim numChart As Integer
  4.     Dim totalRows As Single
  5.    
  6.     numChart = 0
  7.    
  8.     Sheets("統計圖表").Select
  9.     totalRows = Range("B" & Rows.Count).End(xlUp).Row        ' 傳回 B 欄所使用儲存格之最後一格之列號
  10.             
  11.     For Each oShape In ActiveSheet.Shapes
  12.         If oShape.Type = 3 Then
  13.             numChart = numChart + 1
  14.             
  15.             ActiveSheet.Shapes(oShape.Name).Select                     ' OK!
  16.             ' ActiveSheet.ChartObjects(oShape.Name).Activate
  17.            
  18.             ActiveChart.SetSourceData Source:=Range("$B$1:$B$" & totalRows & ", $F$1:$F$" & totalRows & ", $V$1:$V$" & totalRows)
  19.                      
  20.             With ActiveSheet.ChartObjects(oShape.Name).Chart
  21.                 ' .Axes(xlCategory).TickLabels.NumberFormatLocal = "hh:mm:ss"    ' 執行階段錯誤 '-2147467259 (80004005)': Automation 錯誤 無法指出的錯誤
  22.                 .Axes(xlCategory).MajorTickMark = xlCategoryScale
  23.                 .Axes(xlCategory).TickLabelPosition = xlLow
  24.                         
  25.                 ' Cells(2, 26).Value = .ChartTitle.Text                          ' 執行階段錯誤 '5':  程序呼叫或引述不正確
  26.             End With
  27.                   
  28.             ActiveSheet.Shapes(oShape.Name).Left = Cells(3, 1).Left     ' 設定此圖表實際擺放的 X、Y 座標位置。
  29.             ActiveSheet.Shapes(oShape.Name).Top = Cells(3, 1).Top
  30.                     
  31.             ActiveChart.ChartArea.Height = 488                           ' 將原本設定之高度調至適度位置
  32.             ActiveChart.ChartArea.Width = 900
  33.             
  34.             ActiveChart.SeriesCollection(1).InvertIfNegative = True
  35.             ActiveChart.SeriesCollection(1).InvertColor = RGB(32, 178, 208)

  36.             With ActiveChart.SeriesCollection(1).Format.Fill
  37.                 .Visible = msoTrue
  38.                 .ForeColor.RGB = RGB(255, 69, 0)
  39.                 .Transparency = 0
  40.                 .Solid
  41.             End With
  42.         End If
  43.     Next
  44.    
  45.     Cells(1, 1).Select
  46. End Sub
複製代碼

TOP

回復 14# c_c_lai
  1. With ActiveSheet.ChartObjects(oShape.Name).Chart
  2.                 .HasAxis(xlCategory, xlPrimary) = True
  3.            '    .HasAxis(xlCategory, xlPrimary) = False
  4.                ' 圖表上所存在的座標軸  此座標為 False 下面程式會錯誤
  5.                 .Axes(xlCategory).MajorTickMark = xlNone
  6.                 .Axes(xlCategory).TickLabelPosition = xlLow
  7.             End With
  8.             ActiveSheet.Shapes(oShape.Name).Left = Cells(3, 1).Left     ' 設定此圖表實際擺放的 X、Y 座標位置。
  9.             ActiveSheet.Shapes(oShape.Name).Top = Cells(3, 1).Top
  10.             ' 將原本設定之高度調至適度位置
  11.             ActiveSheet.Shapes(oShape.Name).Height = Cells(3, 1).Resize(20).Height
  12.             ActiveSheet.Shapes(oShape.Name).Width = Cells(3, 1).Resize(, 10).Width

  13.            '''*** InvertIfNegative, InvertColor  不適用這圖表的型態
  14.            '****由於對圖表的涉獵尚少 所以正在尋找答案中 或請高手相助
  15.            'ActiveChart.SeriesCollection(1).InvertIfNegative = True
  16.            'ActiveChart.SeriesCollection(1).InvertColor = RGB(32, 178, 208)
  17.            ' With ActiveChart.SeriesCollection(1).Format.Fill
  18.             '    .Visible = msoTrue
  19.             '    .ForeColor.RGB = RGB(255, 69, 0)
  20.             '    .Transparency = 0
  21.             '    .Solid
  22.             'End With
複製代碼

TOP

回復 16# GBKEE
終於可以正常運作了,謝謝您!
唯一不解的是為何 Cells(Lines, 38).Value = ActiveChart.ChartTitle.Text 會有錯誤訊息,真希望能確切了解問題所在。

TOP

回復 16# GBKEE
找到答案了
  1. ActiveChart.SetElement (msoElementChartTitleCenteredOverlay)   ' 一定要先宣告 SelElement, 否則 ChartTile 執行時會出現執行階段錯誤 '5':  程序呼叫或引述不正確
  2.   ActiveChart.ChartTitle.Text = "成交價與成交量"
  3. Cells(3, 38).Value = ActiveChart.ChartTitle.Text
複製代碼

TOP

回復 18# c_c_lai
2003 沒  SelElement  這屬性
  1. Sub Ex()
  2. With ActiveSheet.ChartObjects(1).Chart
  3. .HasAxis(xlCategory, xlPrimary) = True
  4. .Axes(xlCategory).TickLabels.NumberFormatLocal = "hh:mm"
  5. .Axes(xlCategory).MajorTickMark = xlNone
  6. .Axes(xlCategory).TickLabelPosition = xlLow
  7. 'Cells(Lines, 38).Value = .ChartTitle.Text '2003版中 此式有 型態不符合 的錯誤
  8. MsgBox TypeName(Lines)
  9. MsgBox Lines.Count
  10. Cells(Lines.Count + 1, 38).Value = .ChartTitle.Text
  11. End With
  12. End Sub
複製代碼

TOP

回復 19# GBKEE
感謝感謝,實在是獲益良多!

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題