MS Access Tips/Sample and VBA and Blog customize etc...

コマンドボタンの自動繰り返しの繰り返しが早すぎる

タイトル画像

コマンドボタンで押し続けると自動で処理を繰り返すという便利な機能ですが、例えば、日付を1日加算するという処理のコマンドボタンで「自動繰り返し」を「はい」にしておくと、押し続けると爆速で加算されて、思った日付で止めるのが難しいという状況が発生します。

この繰り返し間隔を指定できればいいのですが、そのようなプロパティは残念ながらありません。この間隔を調節する方法の紹介です。

サンプル仕様

テーブル
フィールド名データ型
IDオートナンバー型
日付日付/時刻型
予定内容短いテキスト型

これをレコードソースとするフォームにテキストボックスを配置

テキストボックス
名前txt日付
コントロールソース日付
既定値=Date()

コマンドボタンを配置してプロパティを下記のように設定

コマンドボタン
名前日付加算
自動繰り返しはい

クリック時のイベントプロシージャを下記のように設定。

これで、クリックすると1日加算され、押し続けると連続して加算されます。
が、連続加算が早すぎて目的の日付で止めるのが困難。

ちなみに、Me.Repaint がないと押し続けてる間は日付は変化しない(再描画されない)。

解決法

APIのSleep関数で一定時間待機させます。
このフォームだけで使うなら、フォームモジュールの宣言部に下記のように1行挿入します。
上の2行は最初から記述されています。
Option Explicit がない場合もありますが、その場合は、これも挿入します。

Sleepを他でも使う可能性があるなら、標準モジュールの宣言部に下記の1行を挿入します。

日付加算コマンドボタンのクリック時のイベントプロシージャを下記ように変更。

Sleep の引数はミリ秒単位なので、500 と設定すれば 0.5秒待機します。
この数値を変更することで繰り返しスピードをお好みのものに調節できます。

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/510-bdd83485
該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。