VBお役立ち集>Sleep−時間よトマレ!−

Sleep−時間よトマレ!−



API(Application Programming Interface)とは!WINDOWSを影で動かす黒幕です。(ウソですが簡単にいうとそんなカンジ)黒幕が動けば、下っ端?(VBの標準コントロールとか)よりもいろんな事ができます。

というわけでAPI講座の第一回はSLEEP関数です。

副題にもあるとおり、VBのプログラムの処理にウェイトをミリ秒単位(1/1000秒)でいれる事ができます。
ようは意図的に処理を一時的ストップできるのです。

私が初めて使ったAPIで非常にわかりやすい機能なのでとりあげてみました。

まずVBでAPIを使用するには宣言を行わねばなりません。つまり、「自分は今からSleep関数を使わさせていただきますッ!」ということです。宣言をしないとVB鬼教官は許してくれません。

以下の文をフォームの一番上にでも貼り付けましょう。複数のフォームで使う場合はモジュールにでも貼り付けてください。(その時はDeclareの前のPrivateをPublicにしてくださいね)
'Sleep関数の宣言
'使い方は Sleep(n)とします。1000分のn秒プログラムにウェイトを入れることができます。

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

次に実際の使い方を説明しましょう。
コマンドボタンを押すと3秒後にラベルに文字が出るようにしましょう。

Private Sub Command1_Click()
    Sleep 3000
    Label1.Caption = "VB kingdom"
End Sub

するとコマンドボタンを押した3秒後にラベルに文字が表示されるはずです。

注意!しかーし便利なSleep関数にも落とし穴があります。それはSleepが効いている時には画面の書き換えが行われないのでDoEventsを用いてOSに制御を渡してください。よくわからない人は以下のコードでDoEventsを使用しない場合とした場合の違いを比べてみてください。

Private Sub Command1_Click()
    Dim n As Long

    For n = 0 To 100
      Sleep 30
      DoEvents
      List1.AddItem n
    Next n
End Sub
左のコードを実行するとリストボックスにほぼリアルタイムに「0、1、2..」と次々と追加されていきますが、DoEventsをぬくと、100まで表示が終わらないとリストボックスには何も表示されません。どうでしょう?小さな事ですが、必要な時もあるかと思います。















VBお役立ち集>Sleep−時間よトマレ!−