
EXCELのマクロを用いてルーレットの様なプログラムを作っています。
ミリ秒間隔で処理を呼び出したいので、SetTimerを用いることにしました。
STARTボタンとSTOPボタンを用意し、
STARTボタンをクリックすると、
タイマーをセットし、
100ミリ秒間隔で 処理(nextCell)を呼び出すようにしています。
そしてこの処理(ルーレットのように複数のセルが順番に点滅する)は上手くいきます
STOPボタンをクリックしたときは、TimerStopを呼び出し、KillTimerしています。
ここで、STOPボタンをクリックするたびに、EXCELが実行時エラー50290で異常終了します。
ネットで調べてみたのですが、リンク先のページが見つからなかったりで、よくわかりません。
ちなみに、100ミリ秒間隔を 300ミリ秒間隔にすると、10回中9回くらいは上手くいくのですが、
1回程度はEXCELが実行時エラー50290で異常終了します。
EXCELのバージョンは2013
OSはWindows7 Pro(64ビット)
を使用しています。
ソースコードは以下の通りです。
Option Explicit
Private Declare Function SetTimer Lib "user32" (ByVal Hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Sub KillTimer Lib "user32" (ByVal Hwnd As Long, ByVal nIDEvent As Long)
Private myTimerId As Long
Sub TimerCall()
'STARTボタンで呼ばれる
myTimerId = SetTimer(0&, 0&, 100, AddressOf TimerCount)
End Sub
Sub TimerCount(ByVal Hwnd As Long, ByVal uMsg As Long, ByVal idEvent As Long, ByVal dwTime As Long)
nextCell 'ここでルーレットの処理を行う
End Sub
Sub TimerStop()
'STOPボタンで呼ばれる。ここで必ず異常終了
KillTimer 0&, myTimerId
End Sub
KillTimerにブレイクポイントを設定しても、そこでSTOPせずEXCELが実行時エラー50290で異常終了します。
(←ブレイクポイントで止まらないということは、メモリ破壊なのかと考え、
nextCellを以下のような簡単なプログラムに変更しましたが、結果は同じでした。
Sub nextCell()
'同じセルを点滅させるだけ
Cells(1, 1).Interior.Color = RGB(255, 255, 255)
Cells(1, 1).Interior.Color = RGB(255, 0, 0)
End Sub
また、TimerCountからnextCellを呼び出さなければ、異常終了はしません)
原因や調査方法、別のやり方など、なんでもけっこうですのでアドバイスをお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
エクセルVBA 実行時エラー 50290について
Visual Basic(VBA)
-
「アプリケーション定義またはオブジェクト定義のエラー」の解決
Visual Basic(VBA)
-
VBAのこの実行時エラーは何故起きる?
Visual Basic(VBA)
-
-
4
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
5
簡易リストボックス
その他(Microsoft Office)
-
6
【VBA】ワークブックを開く時にエラーが出る場合と出ない場合の違いは?
Excel(エクセル)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
エクセルマクロで、別のブックが開いているかを判定したいのですが。
その他(Microsoft Office)
-
9
VBAマクロ 実行時エラーが出たり出なかったり
Excel(エクセル)
-
10
コンボボックスの開いたリストを閉じるには
Access(アクセス)
-
11
エクセルVBAで画面の大きさを取得する方法!
Excel(エクセル)
-
12
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
13
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
14
targetをA列のセルに限定するには?
Visual Basic(VBA)
-
15
VBA:結合されたセルに対する「Target」について
Access(アクセス)
-
16
VBA マクロ実行時エラー’1004RangeクラスのPasteSpecialメソッドが失敗
Access(アクセス)
-
17
マクロを実行すると画像がズレてしまいます
その他(Microsoft Office)
-
18
UserForm1.Showでエラーになります。
工学
-
19
エクセルVBAが途中で止まります
Visual Basic(VBA)
-
20
ドロップダウンリスト 自動表示したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UPS警告音を止めたい
-
Excelシート上のマクロを登録し...
-
入力済み、選択したセルに連動...
-
ユーザーフォームをショートカ...
-
マクロを登録しているボタンが...
-
【Excel VBA】マクロボタンを表...
-
マクロで作ったボタンのサイズ...
-
複数シートのボタンに同一の動...
-
VBA 図の削除
-
【Excel】行移動ボタンを沢山作...
-
フォームコントロールから作っ...
-
エクセルの画面にユーザーフォ...
-
Excel ボタンが小さくなる
-
エクセルで、オプションボタン...
-
W61CA どう思いますか?
-
オブジェクト名をVBAで指定...
-
コンボボックスウィザードが出...
-
EXCELの塗りつぶしのボタ...
-
Excelで、ボタンにコメントをつ...
-
パナソニックKX-PW22CLHの電話...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
UPS警告音を止めたい
-
マクロを登録しているボタンが...
-
【Excel VBA】マクロボタンを表...
-
Excelで、ボタンにコメントをつ...
-
入力済み、選択したセルに連動...
-
エクセルの画面にユーザーフォ...
-
複数シートのボタンに同一の動...
-
マクロで作ったボタンのサイズ...
-
オブジェクト名をVBAで指定...
-
エクセルで、オプションボタン...
-
EXCELのマクロが 実行時エラー5...
-
ユーザーフォームをショートカ...
-
Excel ラジオボタンのリセット...
-
フォームコントロールから作っ...
-
トグルボタンをオプションボタ...
-
エクセルでマクロボタンを押す...
-
VBAでオプションボタンなどそれ...
-
【Excel】行移動ボタンを沢山作...
-
ボタンを押しただけで発生する...
おすすめ情報