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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
エクセル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
screenupdatingが機能しなくて困ってます
Visual Basic(VBA)
-
8
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
エクセルでエラーが出て困っています。
Excel(エクセル)
-
11
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
12
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
13
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
14
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
15
VBAでループ内で使う変数名を可変にできないか。
Visual Basic(VBA)
-
16
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
17
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
18
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
19
VBA プロシージャの名前の取得
その他(Microsoft Office)
-
20
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォームコントロールから作っ...
-
UPS警告音を止めたい
-
複数シートのボタンに同一の動...
-
オブジェクト名をVBAで指定...
-
ボタンを画像で作るか、CSSでデ...
-
Excelシート上のマクロを登録し...
-
パナソニックKX-PW22CLHの電話...
-
VBAでクリアボタンのみ残してシ...
-
Accessのフォームでタブの色
-
EXCELの塗りつぶしのボタ...
-
Dドライブのアクセス許可
-
Access VBAでボタンの背景色を...
-
マクロ ボタンをクリックしたら...
-
エクセル チェックボックスの...
-
2重フィルター
-
【Excel】難しいのですが、献立...
-
【Excel VBA】マクロボタンを表...
-
生成AI画像について
-
メルカリのメルカードで買い物...
-
画像をループさせるうまい方法...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelシート上のマクロを登録し...
-
エクセルの画面にユーザーフォ...
-
【Excel VBA】マクロボタンを表...
-
UPS警告音を止めたい
-
Excel ラジオボタンのリセット...
-
Excelで、ボタンにコメントをつ...
-
複数シートのボタンに同一の動...
-
フォームコントロールから作っ...
-
ユーザーフォームをショートカ...
-
マクロで作ったボタンのサイズ...
-
エクセルで、オプションボタン...
-
EXCELのマクロが 実行時エラー5...
-
EXCELの塗りつぶしのボタ...
-
エクセルでマクロボタンを押す...
-
excel スクロールしても常にボ...
-
Accessのフォームでタブの色
-
入力済み、選択したセルに連動...
-
マクロ初心者です。 msgboxのre...
-
Access VBAでボタンの背景色を...
-
VBAでクリアボタンのみ残してシ...
おすすめ情報