プロフィール

pueblo del script
作者
azul-palazzo
作者プロフィール
業務PG暦6年、趣味のPGは10年以上の微妙な中堅プログラマ。言語はVB, VB.NET(ASP.NETも込), Java, JSP。WSHはオフィシャルなEngineであるVBScript, JScript両方をカバー。最近はRubyやDMonkeyをかじろうかなと考えている。あとネコアレルギーの疑いも何のその、無類のネコ好き。
メッセージを送る

»プロフィール

マイサイト



記事

Accessマクロを使ってステータスバー領域をプログレスバーとして利用するサンプル

OfficeVBA

公開日:2009/03/17 00:00

ひとまずマクロのソースを載せておきます。

Version =196611
ColumnsShown =0
Begin
Action ="RunCode"
Comment ="ステータスバー領域をクリア"
Argument ="SysCmd (5)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="プログレスバーを初期化"
Argument ="SysCmd (1, \"Wait Working・・・\",100)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="ウェイト"
Argument ="vbSleep (1000)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="値をセット"
Argument ="SysCmd (2, 33)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="ウェイト"
Argument ="vbSleep (1000)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="値をセット"
Argument ="SysCmd (2, 66)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="ウェイト"
Argument ="vbSleep (1000)"
End
Begin
End
Begin
Action ="RunCode"
Comment ="値をセット"
Argument ="SysCmd (2, 100)"
End

サンプルを試す際は既出のソースをAccessVBAの隠しメソッドであるLoadFromTextメソッドで吸い上げてAccessに取り込んで下さい。

あと補助用のVBモジュールです。
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Function vbSleep(ByVal argWait As Long)
Sleep argWait
End Function

処理としては1秒ごとに進捗を進め、3秒後に100%となり処理が完了という流れになります。

さて、まず頭から処理を説明していくと、まず、SysCmd (5)でステータスバー領域を明示的にクリアします。これはステータスバー領域をテキスト表示する場合でもプログレスバー表示する場合でも同様のようです。
次にSysCmd (1, "Wait Working・・・",100)でプログレスバーとしての初期化を行います。
第2引数はプログレスバーの横に表示するメッセージで進捗が進んでいく間は固定となります。次の第3引数は進捗がMAXになった場合の値を示します。ここは任意ですが、今回はパーセントのイメージで使用したいので、100を指定しました。
あとは1秒ごとにSysCmd (2, x)で進捗を進め、3秒経つと進捗が100%になり完了です。

»コメント(0)一覧

クリップ