[[20170530131151]] 『株価チャートを専用シートに表示』(skyblue) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『株価チャートを専用シートに表示』(skyblue)

 元のソフト(2.元ソフト)はデーター(1.データ)が有るシートに株価チャートが表示されます。
このチャートを専用シートに表示したいため、新ソフト(3.作成中ソフト)に変更しましたが、

 bb.ChartObjects(1).Chart.ChartType = xlStockOHLC
がChartTypeエラーになり動きません。
ご指導のほど、よろしくお願いします。

1.データ
シート1にデータが次の様に入っています

日付 始値 高値 安値 終値
4月1日 500 589 442 514
4月2日 514 701 488 649
4月3日 649 664 642 657



2.元ソフト
Sub Graph()

    Dim i As Integer, 行数 As Integer
    行数 =25
    ' グラフの削除
    For i = ActiveSheet.ChartObjects.Count To 1 Step -1
         ActiveSheet.ChartObjects(i).Delete
    Next i 
    ' グラフエリア確保
    ActiveSheet.Shapes.AddChart.Select 
    ' 株価チャートをつくる
    ActiveChart.ChartType = xlStockOHLC 
    ' グラフは、a1〜w23 の範囲に入れる
    ActiveChart.Parent.Top = ActiveSheet.Range("a1:w23").Top
    ActiveChart.Parent.Left = ActiveSheet.Range("a1:w23").Left
    ActiveChart.Parent.Height = ActiveSheet.Range("a1:w23").Height
    ActiveChart.Parent.Width = ActiveSheet.Range("a1:w23").Width 
    ' データソースを指定
    ActiveChart.SetSourceData _
      Source:=Range(Cells(1, 1), Cells(行数, 5)), _
      PlotBy:=xlColumns
End Sub 

3.作成中ソフト
Sub Graph()

    ' 変数定義
    Dim i As Integer, 行数 As Integer
  行数=25
    Set aa = ThisWorkbook.Sheets("page1")
    Set bb = ThisWorkbook.Sheets("page2") 
    ' グラフの削除
    For i = bb.ChartObjects.Count To 1 Step -1
         bb.ChartObjects(i).Delete
    Next i
     ' グラフエリア確保
'    Sheets.Add After:=ActiveSheet    '通常のシートを追加
    bb.Shapes.AddChart.Select
    bb.Activate
    bb.ChartObjects(1).Name = "chart1"
'    ActiveChart.Select
    ' 株価チャートをつくる
'++++++++++++++++++++次のスクリプトでエラー++++++++++++++++++++++++
    bb.ChartObjects(1).Chart.ChartType = xlStockOHLC
    ' グラフは、a2〜w23 の範囲に入れる
    ActiveChart.Parent.Top = bb.Range("a2:w23").Top
    ActiveChart.Parent.Left = bb.Range("a2:w23").Left
    ActiveChart.Parent.Height = bb.Range("a2:w23").Height
    ActiveChart.Parent.Width = bb.Range("a2:w23").Width

    ' データソースを指定
    ActiveChart.SetSourceData _
      Source:=Range(aa.Cells(1, 1), aa.Cells(行数, 5)), _
      PlotBy:=xlColumns
End Sub

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 株価チャートはあまり詳しくないのですが、
 株価チャートの場合はソースの値がそろっていないといけないみたいですので
 ChartTypeを設定する前に下記のようにソース範囲を入れてはいかがでしょうか。 

 bb.ChartObjects(1).Chart.SetSourceData Source:=aa.Range("A1").CurrentRegion
(ろっくん) 2017/05/30(火) 16:55

>元のソフト(2.元ソフト)

でも、条件次第で同じエラーになりませんか。

理由は全くわかりませんが、
★の部分でエラーを回避できています。
2010で動作確認しましたが、2016では未確認。

 ※ 19:00 削除

動作確認不十分でした。出直します。

(マナ) 2017/05/30(火) 18:54


問題なかったので再掲。

 Option Explicit

 Sub test()
    Dim wsD As Worksheet, wsG As Worksheet
    Dim rngD As Range, rngG As Range
    Dim cht As Chart
    Dim i As Long

    Set wsD = Worksheets("aa")
    Set wsG = Worksheets("bb")

    Set rngD = wsD.Range("a1").CurrentRegion.Resize(, 5)
    Set rngG = wsG.Range("c3:h10")

    Application.ScreenUpdating = False

    For i = wsG.ChartObjects.Count To 1 Step -1
         wsG.ChartObjects(i).Delete
    Next i

    '★データ範囲内を選択してからでないとエラー???
    Application.Goto rngD(1)

    Set cht = Charts.Add
    cht.ChartType = xlStockOHLC
    cht.SetSourceData rngD, xlColumns
   With cht.Location(xlLocationAsObject, wsG.Name)
        .Parent.Top = rngG.Top
        .Parent.Left = rngG.Left
        .Parent.Height = rngG.Height
        .Parent.Width = rngG.Width
    End With

 End Sub

(マナ) 2017/05/30(火) 19:05


素早い対応で色々有難うございました。

他の仕事に追われて見るのが遅れて申し訳ありません。

「ろっくん」さん の案で試したところ、エラーが消えました。

    bb.ChartObjects(1).Chart.SetSourceData Source:=aa.Range("A1").CurrentRegion
    bb.ChartObjects(1).Chart.ChartType = xlStockOHLC 

のように、
  bb.ChartObjects(1).Chart.SetSourceData Source:=aa.Range("A1").CurrentRegion

を前に入れて解決しました。

感謝します。

(skyblue) 2017/05/31(水) 17:32


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.