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で質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) Vba LongPtrについて教えてください 2 2022/08/19 11:14
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
このQ&Aを見た人はこんなQ&Aも見ています
-
風水の観点で選ぶ観葉植物とは?置き場所や上げたい運気ごとの注意点を紹介!
観葉植物で運気をアップするコツを、風水デザイン1級建築士の福島昌彦さんに伺った。
-
エクセルVBA 実行時エラー 50290について
Visual Basic(VBA)
-
「アプリケーション定義またはオブジェクト定義のエラー」の解決
Visual Basic(VBA)
-
VBAのこの実行時エラーは何故起きる?
Visual Basic(VBA)
-
-
4
簡易リストボックス
その他(Microsoft Office)
-
5
Excel(VBA)でSetTimer関数を使用する時..
Excel(エクセル)
-
6
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
7
エクセルでエラーが出て困っています。
Excel(エクセル)
-
8
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
screenupdatingが機能しなくて困ってます
Visual Basic(VBA)
-
11
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
12
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
13
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
14
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
15
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
16
Excel VBAでCheckboxの名前を変数にとって値を調べたい
Visual Basic(VBA)
-
17
「Cancel = True」とはどういう意味でし
Word(ワード)
-
18
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
19
Excel(エクセル) VBA プロシージャーをミリ秒で繰り返し実行する方法
Excel(エクセル)
-
20
VBAの配列サイズとメモリに関して
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
複数シートのボタンに同一の動...
-
UPS警告音を止めたい
-
ユーザーフォームをショートカ...
-
マクロで作ったボタンのサイズ...
-
【Excel VBA】マクロボタンを表...
-
Accessのフォームでタブの色
-
excel スクロールしても常にボ...
-
Access VBAでボタンの背景色を...
-
エクセルVBA フォームへ動...
-
フレーム内のオプションボタン...
-
Excelで、ボタンにコメントをつ...
-
エクセルで、オプションボタン...
-
エクセルでマクロボタンを押す...
-
VBAでオプションボタンなどそれ...
-
日報の休日ボタン(トグルボタ...
-
【Excel】行移動ボタンを沢山作...
-
Excel vab でのボタンの使い分...
-
EXCELの塗りつぶしのボタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
UPS警告音を止めたい
-
複数シートのボタンに同一の動...
-
ユーザーフォームをショートカ...
-
Excelで、ボタンにコメントをつ...
-
マクロで作ったボタンのサイズ...
-
フォームコントロールから作っ...
-
Excel ラジオボタンのリセット...
-
【Excel VBA】マクロボタンを表...
-
エクセルで、オプションボタン...
-
excel スクロールしても常にボ...
-
EXCELの塗りつぶしのボタ...
-
EXCELのマクロが 実行時エラー5...
-
Accessのフォームでタブの色
-
マクロ初心者です。 msgboxのre...
-
入力済み、選択したセルに連動...
-
Access VBAでボタンの背景色を...
-
エクセルでマクロボタンを押す...
-
エクセルVBA フォームへ動...
おすすめ情報