1-1KIkabu(nabe)実行でエラー発生
(1)エラー内容
同じプログラムで複数銘柄を指定し走らせた時に、1つ目の銘柄については問題無く表示するのですが、
2つ目の銘柄を取得する際に、Module4-4 ’出来高倍率で抽出 If Cells(i,21)>kchk0 Thenの部分で
エラー出て止まってしまいます。

【図1-1a】エラーメッセージ





【図1-1b】エラー箇所

21(U)列の計算結果がエラー値で、
Ifステートメントでエラー



(2)エラー発生原因
数銘柄を解析を連続して実行でエラー発生ですが、1個目の時は問題ないが、2個目の解析を行う時、1個目の
コピー・ペースト実行した時のコピーデータがクリックボードに残って、2個目銘銘柄実行の時1列挿入のとき、
クリックボードのデータが挿入した列に貼りついてしまう。

Excel2010まではコピー・ペースト実行後に何処かのセルを1個アクティブにすれば、選択したコピー箇所は解除
されたので問題なかったが、Excel2016ではコピー・ペースト実行後にクリックボードデータ消去のステートメント
の実行が必要になった。

改善策としては、全てのコピー・ペースト実行後に、CutCopyModeプロパティの解除(False)を行う(例3-1参照)。
又は、列挿入ステートメントの前にCutCopyModeプロパティの解除(False)を行う(例3-2参照)。の2通りの方法
がありますが、どちらでもよい。

(3-1) 改善策1
コピー・ペースト実行後は、CutCopyModeプロパティの解除(False)を行う例。
【Module4】
安値率で表示 ------------------------------------------
Range(Cells(4, 15), Cells(gyou, 15)).Formula = "=E4/" & taka
     Range("G1").Select
Range(Cells(4, 15), Cells(gyou, 15)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, _
    Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Range("G1").Select
 
Application.CutCopyMode = False    '2016 追加◆
 

(3-2) 改善策2
列挿入前に、CutCopyModeプロパティの解除(False)を行えば、クリックボード解除漏れも対応できる。
【Module3】
Sub 列移動()
 
Application.CutCopyMode = False    '2016 追加◆
 
列移動
If Cells(3, 6) = "出来高" Then
    Columns("G:G").Delete Shift:=xlToLeft
    Columns("B:B").Insert Shift:=xlToRight
    Columns("G:G").Cut
    Range("B1").Select
    ActiveSheet.Paste
    Range("A2").Select
End If
 

(3-3) 改善策3
上記(3-1)or(3-2)で問題は解決したが、更に不具合が発生することがあったので以下も追加した。
【Module1】
銘柄変更実行のメインルーチン
For sh = 1 To meino(0, 0)
Application.CutCopyMode = False    '2016 追加◆
 
    kabuno1 = meino(0, sh)
    meigara = meino(1, sh)
    Sheets.Add.Name = "(" & sh & ")" & kabuno1
 





1-2 「プログラムにコマンド送信しているときに、エラー発生」と表示され KIkabu(**)が起動できない
Excel 内部でいくつかのプロセスが実行されているため、Excel を終了できないことを示しています。
プログラムにコマンドを送信しているときに、エラーが発生しました(図1-2参照)。

【図1-2a】エラーメッセージ


(2)エラー発生原因
この問題は、Excel のオプションでは、[ダイナミック データ エクス チェンジ (DDE) を使用する他のアプリ
ケーションを無視する] チェック ボックスがオンの場合に発生する可能性があります。

(3) 改善策
[1]. ファイルを選択 >オプション。
[2]. 詳細設定を選択、[全般] セクションまで下にスクロールし、[全般] 領域には、ダイナミック データ エクス
    チェンジ (DDE) を使用する他のアプリケーションを無視する] チェック ボックスをオフにします。
[3]. 選択OK.



-----------------------------------------------------------------------------------
上記実行でエラーの出る頻度はかなり少なくなった。しかし直っていない、直りそうも無いが、
Microsoft.Supportページに下記の記述があった。現在手順1〜3実行で対応しています。

ファイルを開こうとするタイミングや、マシンの負荷状況、処理能力にも影響を受けるため、このメッセージを完全
に抑止する方法はありません。

このメッセージは、その瞬間に該当ファイルを開くことに失敗したというエラーであり、潜在的な問題があることを
示すものではありません。そのため、後述の切り分け実施後も OS 起動直後等回避できないパターンは、以下
の手順のように、このメッセージで [OK] をクリックして、再度開きたいファイルをダブルクリックしてファイルを
開いてください。

手順 :
1.エクスプローラーで Excel ファイルをダブルクリックします。
2.「プログラムにコマンドを送信しているときにエラーが発生しました」のメッセージが表示されたら、
[OK] をクリックします。
  このとき、Excel アプリケーション ウィンドウは閉じないようにします。
3.再度、エクスプローラーで Excel ファイルをダブルクリックします。

※ なお、エラー発生の時はリボンに「アドイン」ボタンが表示されませんが、再度KIkabu(**).xls
   ファイルをクリックして開くと「アドイン」ボタンが追加表示されます。



1-3 KIデイトレードで60分後の分チャートで不具合発生
分チャートは60分でチャート表の最後列になり、次のチャートは61分からの表示になります。この時1〜60分を
消去し、また1から描く方法もありますが、その前の折れ線が無いと連続したチャートが見えないので、本マクロ
では、最後の13列を残し具体的には1〜47列を削除し48〜60列残し、14列に61分データを追加します。

削除のみでは問題が発生しないが、現在値株価のほかに同じ行の後方列にVWAP分データも保存しており、
60分オーバー後の処理として、1〜47列削除の行為は2度実行します。ただし後方列のVWAP分データは
2度移動されるので、1回分の1〜47列については1度挿入してスタート位置を元に戻します。この1度挿入した時
Excel2016では訳の判らないデータが貼りつき分データが崩れます。

【図1-3a】分チャートのイメージ
   

左図が60分データです。 右図は最後の13分を残して61分以降を追加する例です。
Excel2016では訳不明の分データになり、右図のようなチャートが表示されません(Excel2003/2010は問題なし)。

(1)不具合内容
60分オーバー後の分チャートが正しく表示できない。(マクロはエラーならないのでストップしない)

(2)不具合発生原因
列挿入で、その列に訳の判らないデータが貼りつく。(前記1-1項と同じ原因)

(3-1) 改善策1
列挿入前に、CutCopyModeプロパティの解除(False)を行えば、クリックボード解除漏れに対応できる。

【Module1】
############### 60列オーバー処理  ###############################
 
  Application.CutCopyMode = False   '◆2016 追加
 
            Sheets(ksheet).Select
            'VWAPカット&追加
            Range(Columns(150), Columns(197)).Select
                Selection.Delete Shift:=xlToLeft
                Selection.Insert Shift:=xlToRight
 
            '株価カット
            Range(Columns(80), Columns(127)).Select
                Selection.Delete Shift:=xlToLeft
            Range("A3").Select
 


(3-2) 改善策2
2016は列挿入で不具合が発生するので、挿入ステートメントをカットした例。なお、60分後のVWAPデータは
列除後に表示されているデータを切り取り正しい列位置に貼り付けてあります。
【Module1】
 
            Sheets(ksheet).Select
            'VWAPカット&追加
            Range(Columns(150), Columns(197)).Select
                Selection.Delete Shift:=xlToLeft         '削除@
              '  Selection.Insert Shift:=xlToRight         '2016この1行カット◆
 
            '株価カット
            Range(Columns(80), Columns(127)).Select
                Selection.Delete Shift:=xlToLeft         '削除A
            Range("A3").Select
            tcnta = tcnta + 1
 
 '2016に追加◆
             Columns("CX:DJ").Select              ’現在表示のVWAPデータ切り取り
               Selection.Cut
 
            Range("ET1").Select                 ’正しい表示位置へ貼り付け
                ActiveSheet.Paste
 
                Range("A3").Select
                Application.CutCopyMode = False




【戻る】    【HPへ】