プロが教える店舗&オフィスのセキュリティ対策術

過去のQ&Aを参考にRSSで現在値をエクセルに書き出し、上がっているのか下がっているのかを記録したい。証券会社のテックデーターをエクセルで作りたい 移動平均線の30秒足とか10秒足を作りたいと考えています

セルに数式を入れVBAを動かすと固まってしまいます

詳細時間 現在値 出来高 売買代金 VWAP 約出来 現在値 増減
14:59:59 942.2 3452100 3269307 947.05 50400 -0.6
15:00:00 942.7 5219700 4935623 945.58 1767600 0.5
15:00:00 942.7 5219700 4935623 945.58 0 0.0
#N/A #N/A #N/A #N/A #N/A         エクセルを立ち上げた時
: : 0 0 0.00
: : 0 0 0.00
: : 0 0 0.00
9:00:00 953 156200 148859 953.00
9:00:01 953.5 157200 149812 953.00

VBAで#N/Aが発生してエラーに そこで取引開始して数行にデーターが入ったらコメントアウトしていた箇所を復帰。後場引けまで正常に終了。

そこでファイルを開いたときに出るエラーを回避するには別のプロシージャを作るべきなのか
その場合どのように作るのがいいのか。行き詰った状態です わかる方 知恵を貸してください

Private Sub Worksheet_Calculate()

Dim A As Single
Dim B As Single
Dim c As Single '一つ前の現在値
Dim d As Single '現在値
MaxRow = Sheets("時系列").Cells(Rows.Count, 1).End(xlUp).Row + 1
Sheets("時系列").Range("A" & MaxRow) = Sheets("RSS").Range("E4") '時間
Sheets("時系列").Range("B" & MaxRow) = Sheets("RSS").Range("D4") '現在値
Sheets("時系列").Range("C" & MaxRow) = Sheets("RSS").Range("C4") '出来高
Sheets("時系列").Range("D" & MaxRow) = Sheets("RSS").Range("F4") '売買代金
Sheets("時系列").Range("E" & MaxRow) = Sheets("RSS").Range("G4") '出来高加重平均
' A = Sheets("時系列").Range("C1").End(xlDown).Offset(-1)
' B = Sheets("時系列").Range("C1").End(xlDown)
' Sheets("時系列").Range("F" & MaxRow) = B - A
'
' c = Sheets("時系列").Range("B1").End(xlDown).Offset(-1)
' d = Sheets("時系列").Range("B1").End(xlDown)
' Sheets("時系列").Range("G" & MaxRow) = d - c
End Sub

質問者からの補足コメント

  • 約定した株価が時間的にランダムなためにRSS専用シートにCalculateイベントでとらえています。
    例えば株価はRSSシートのD4で捉えて変化するごとに時系列シートに順番に書き出し記録していくためCalculateイベントがいいと考えたからです。そしてここまではうまく動いたのですが コメント行がどうしても出だしでエラーになります。 VBAじゃなく関数だけならrowを使って最終行を指定し、ひとつ前の値を引くだけなのですが

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/09/29 23:47

A 回答 (1件)

こんばんは



ご提示のマクロ自体は、シート間でデータを転記するだけのものなので、特に問題は無いと思います。
ただし、Calculateイベントで実行するような設定になっているようですので、どのような意図で作成されているのか不明です。
(同じ処理が頻発する可能性があるので・・)

他の部分の仕組みがどうなっているのか不明ですけれど、それらとの組み合わせ方などに問題があるのではないかと推測します。

以下は推測ですが・・・
多分、Calculateイベントでの処理をやめて、ブックが安定した状態で単独実行するようにすれば、何の問題も発生しないと思いますけれど・・・??
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A