見出し画像

スマイルキャッチャーの「取得」ボタン高速化について

○イントロダクション

「スマイルキャッチャー」とは、
無料で配布されていたオプション取引に関するツールです。

一旦公開停止となりましたが、以下のサイトにて復刻され、
条件付きでの無料配布となっています。

スマイルキャッチャーsc0.64.rdx/ダウンロード | ゑもんレポート【オプション取引編】

個人でのオプション取引に非常に有用なツールですので、
私的利用の範囲で改良を加えてみたいとソースコードを見ていたところ、
動作の高速化を若干行うことができると分かりました。

このnoteではその手順を書き留めておきます。

高速化の該当部分:
「取得」ボタンを押したときの動作時間短縮
(楽天RSS銘柄取得→銘柄データ一時保存シートへの転記動作)

○手順

1.Excelのマクロ編集画面を開きます。

2.「標準モジュール→限月取得」モジュールより、
GetOptionsListサブルーチンを探します。

3.該当サブルーチン内の以下のコードを削除します。

objListSheet.Select

4.該当サブルーチン内のコードを以下のように変更します。

変更前:

For i = 1 To UBound(list, 1)
    For j = 1 To UBound(list, 2)
        Cells(i, j) = list(i, j)
    Next j
Next i

Rows(1).Select
Selection.Delete Shift:=xlUp
Range("A1").Select

変更後:

With objListSheet
    .Range(.Cells(1, 1), .Cells(UBound(list, 1), UBound(list, 2))) = list
    .Range("A1").EntireRow.Delete
End With

5.上書き保存します。

6.「設定」シートの「取得」ボタンの動作が少し早くなっていることを確認します。

○どうして高速化するのか

元のソースコードは「配列の中身を一つずつセルへ転記する動作」となっていました。
これを「該当範囲のセルへ配列の内容を一気に代入する動作」とすることで、処理を高速化・軽量化させています。

この記事が気に入ったらサポートをしてみませんか?