[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『株価チャートを専用シートに表示』(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
でも、条件次第で同じエラーになりませんか。
理由は全くわかりませんが、
★の部分でエラーを回避できています。
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.