ご質問させていただきます。
Excel2007で15分足の株価チャートを表示させています。VBAでリアルタイムデータを15分毎に記録してチャートを表示しています。このチャートに最初から水平線を何本か表示させておきたいのです。
水平線の価格は事前に計算した固定値で、リアルタイムデータとは無関係ですが、毎日変更します。
もう少し具体的に言いますと、毎日午前9時からリアルタイムデータの記録を開始するのですが、水平線の値は9時前に計算できており、日中に変更することはないため、最初からチャートに表示させておきたいのです。
どなたか教えていただけないでしょうか?
なお、当方はExcelやVBAに関しては初歩的な知識しかありません。
よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
別案として、系列を追加する方法ですが、
"Sheet1"が該当シート、
Chartのデータ範囲がA2:E100 だとします。
F2:F100セル、G2:G100セルを作業エリアとして、上限値と下限値をセットします。
(例えばF2セルに上限値を入力するならF3セル以降 =F2 などの式)
Sub test()
With Sheets("Sheet1").ChartObjects(1).Chart
With .SeriesCollection.NewSeries
.AxisGroup = 2
.Values = Sheets("Sheet1").Range("F2:F100")
.Border.Color = vbRed
End With
With .SeriesCollection.NewSeries
.AxisGroup = 2
.Values = Sheets("Sheet1").Range("G2:G100")
.Border.Color = vbRed
End With
End With
End Sub
追加した系列の数値を第2軸にしますので、既に第2軸を使っているチャートには使えません。
また、更新されたデータによってy軸の最大値|最小値が変動するような場合は
数値軸を合わせるために、やはりVBA更新時に以下のコードを Call しなければいけません。
Sub try2()
Dim c As Chart
Set c = Sheets("Sheet1").ChartObjects(1).Chart
With c.Axes(xlValue, xlSecondary)
.MaximumScale = c.Axes(xlValue, xlPrimary).MaximumScale
.MinimumScale = c.Axes(xlValue, xlPrimary).MinimumScale
End With
Set c = Nothing
End Sub
end-u 様
ご回答ありがとうございます。
やりたいことができました!
ご親切に別案まで教えていただき感謝いたします。
この度は本当にありがとうございました。
No.1
- 回答日時:
チャートに系列を追加し、セルを参照させて表示を自動更新にした方が良いのだとは思いますが、
現状のチャート種類によっては、ちょっと面倒な作業になりそうです。
>VBAでリアルタイムデータを15分毎に記録してチャートを表示しています。
どうせVBAで処理されるのですから、1つの案として
まずLineShapeを追加しておいて、VBAでデータ更新する時にLineShapeの表示位置を調整する..
という方法が考えられます。
Sub ラインの追加() '1回だけで良い
On Error GoTo errH
'ActiveSheetの1つ目のChart
'またはChartをアクティブにして実行するなら
'With ActiveChart 'に変えても良い
With ActiveSheet.ChartObjects(1).Chart
With .Shapes.AddLine(0, 0, 100, 0)
.Name = "上限"
.Line.ForeColor.RGB = RGB(255, 0, 0)
End With
With .Shapes.AddLine(0, 0, 100, 0)
.Name = "下限"
.Line.ForeColor.RGB = RGB(255, 0, 0)
End With
End With
errH:
If Err.Number <> 0 Then MsgBox Err.Number & "::" & Err.Description
End Sub
上記コードでLineを2本追加します。
後は、VBA更新時に以下のコードを Call すれば良いです。
Sub try()
Dim T As Single 'y軸のTop位置
Dim H As Single 'y軸のHeight
Dim L As Single 'x軸のLeft位置
Dim W As Single 'x軸のWidth
Dim mx As Single 'y軸最大値
Dim mn As Single 'y軸最小値
Dim gp As Single '上限と下限の差
Dim up '上限
Dim dn '下限
On Error GoTo errH
With Sheets("Sheet1")
up = .Range("X1").Value
dn = .Range("X2").Value
With .ChartObjects(1).Chart
With .Axes(xlValue)
T = .Top
H = .Height
mx = .MaximumScale
mn = .MinimumScale
End With
With .Axes(xlCategory)
L = .Left
W = .Width
End With
gp = mx - mn
With .Shapes("上限")
.Top = (mx - up) * H / gp + T
.Left = L
.Width = W
End With
With .Shapes("下限")
.Top = (mx - dn) * H / gp + T
.Left = L
.Width = W
End With
End With
End With
errH:
If Err.Number <> 0 Then MsgBox Err.Number & "::" & Err.Description
End Sub
>With Sheets("Sheet1") 'シート名
> up = .Range("X1").Value '上限を記録しておくセル
> dn = .Range("X2").Value '下限を記録しておくセル
この箇所は実際の環境に合わせて適宜変更してください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) VBAでユークリッド距離を用いて1番近い物を表示 表 裏 縦 横 高さ 縦 横 高さ 名前 1 45 9 2022/10/23 16:52
- Visual Basic(VBA) Excel VBA 書式変更で困ってます。 オートフィルターの日付フィルターを用いて データの絞り込 2 2022/07/26 22:16
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Excel(エクセル) 至急 Excel日付表示設定教えてください Excelの日付表示ですが、他者から送られてくるExce 6 2023/02/03 11:01
- 日本株 株式分割後の出来高について 4 2023/04/04 08:09
- Visual Basic(VBA) EXCEL VBAで NHK NEWSの NEWSデータ内容取得が できない 1 2023/04/09 12:26
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- Excel(エクセル) Excelで全クラスのランキング表を作成したい 4 2022/05/24 15:28
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンを買い替える際、前の...
-
Microsoft Officeを2台目のPCに...
-
office2019 のoutlookは2025年1...
-
英数字のみ全角から半角に変換
-
Office 2021 Professional Plus...
-
office365って抵抗感ないですか?
-
Microsoft 365 の支払いが反映...
-
漫画喫茶のローカルフォルダに...
-
Excel テーブル内の空白行の削除
-
大学のレポート A4で1枚レポー...
-
Office2021を別のPCにインスト...
-
Excel VBA 日程表からスケジュ...
-
マクロ自動コピペ 貼り付ける場...
-
Outlook で宛先が複数の場合の人数
-
エクセルでXLOOKUP関数...
-
会社PCのメールが更新されない
-
特定の語句を含むワードファイ...
-
Excel 小生ど素人です、数式を...
-
Officeを開くたびの「再起動メ...
-
http://oshiete.goo.ne.jp/qa/1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのチャートでX軸がセ...
-
fxについて 業者ごとにチャート...
-
仮想通貨の投資について、経験...
-
TradingViewでは、というか、円...
-
MT4のT/Pの設定が無視される?
-
MT4のサブウインドウの左上の表...
-
ビットコインについて 半減期ま...
-
FXの板の厚さは読んでも意味な...
-
Excel2007の株価チャートに水平...
-
MT4で並び順を指定してのチャー...
-
Meta Trader4の定型チャートの...
-
FXのチャートで2種類の通貨を...
-
久しぶりの祝日にfxのチャート...
-
ネットでよく(白チャートだと不...
-
MT4が回線不通になってしまう。
-
ATR指標の使えるFX会社は?
-
一つのチャートに平均足とロー...
-
FXで、RSIを3日に設定で...
-
フィボナッチ教えて下さい。
-
各FX会社のチャートヒゲの長...
おすすめ情報