VBAのIE(InternetExplorer)制御で利用したTimeSerial関数を解説しています。
TimeSerial関数はダイアログボックスにメッセージとボタンを表示し、どのボタンが押されたかを示す整数型の数値を返します。引数promptに指定できる文字数は、1バイト文字で約1024文字です。ただし使用する文字の幅によって使用できる文字数は異なります。引数promptの中で強制的に改行する場合は、キャリッジリターン(Chr(13))とラインフィールド(Chr(10))を使用します。これらの文字はVisualBasicの定数として定義されていますので、vbCr(キャリッジリターン)、vbLf(ラインフィールド)、vbCrLf(キャリッジリターン+ラインフィールド)を使用することもできます。引数buttonsには、次の定数を使用できます。
TimeSerial関数は、引数で指定した時、分、および秒に対応する時刻を含むバリアント型 (内部処理形式 Dateの Variant) の値を返します。
構文 | TimeSerial(hour, minute, second) | ||||
---|---|---|---|---|---|
引数 | 省略 | 説明 | |||
hour | × | 必ず指定します。この名前付き引数はバリアント型 (内部処理形式 Integer の Variant) のデータ形式で指定します。時を表す 0 (12:00 AM) ~ 23 (11:00 PM) の範囲の数値または数式を指定します。 | |||
minute | × | 必ず指定します。この名前付き引数はバリアント型 (内部処理形式 Integer の Variant) のデータ形式で指定します。分を表す 0 ~ 59 の範囲の数値または任意の数式を指定します。 | |||
second | × | 必ず指定します。この名前付き引数はバリアント型 (内部処理形式 Integer の Variant) のデータ形式で指定します。秒を表す 0 ~ 59 の範囲の数値または任意の数式を指定します。 |
TimeSerial 関数の各引数は、それぞれ正しい範囲内になければなりません。時の範囲は 0 ~ 23、分および秒の範囲は 0 ~ 59 です。また、ある時刻からの相対的な時、分、および秒を表す数式を引数に指定することもできます。
次の例では、直接日付を指定せずに、式を用いて相対的に指定しています。正午の 6 時間前 (12 - 6) から 15 分前 (0 - 15) の時刻、午前 5:45:00 を返します。
TimeSerial(12 - 6, -15, 0)
各引数に指定する値が正しい範囲内にない場合、指定された値は引数に従って加算されます。たとえば、名前付き引数 minute に 75 を指定すると、1 時間と 15 分として扱われます。ただし、各引数の値が -32,768 ~ 32,767 の範囲を超える場合、エラーが発生します。3 つの引数で指定した時刻が時刻として正しい範囲内にない場合には、エラーが発生します。
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If
※ドラッグ(スワイプ)すると全体を確認できます。
こちらはSleep関数を利用するためのAPI宣言になります。API宣言Sleep関数を利用しますという宣言で必ず記述します。ここで注意点がありますが、API宣言を「IF~Thenステートメント」で分岐させているのが分かるかと思います。これは、office2010で64bit(ビット)版の場合は書き方が異なるため、「IF~Thenステートメント」でそれぞれAPI宣言をしています。手元のPC環境に合わせた書き方でも大丈夫ですが、汎用性を持たせるための記述になりますので、追記しておきましょう。
参考元は「32ビット版のOffice2010プログラムでVBAマクロを編集すると・・・」になりますので、一度確認してください。
もう1つ注意する点はSleep関数を利用している間は、EXCEL操作は一切行えません。処理中でも操作できるようにするには、DoEvents関数を利用する必要があります。こちらはWindowsに制御を移してくれる関数でループ処理などで利用する場合、プログラムが固まることがなくなります。
また、宣言ステートメントは、最初のプロシージャ宣言の前に配置する必要がありますので、一番上に記述してください。
Sleep関数を利用して時間を止めます。
こちらのサンプルコードは処理をするとSleep関数で3秒間処理を停止し、その後にメッセージボックスを表示させるマクロになります。
#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If
Sub sample()
Sleep 3000
msgBox "3秒間処理を止めました。"
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
3秒後にメッセージボックスが表示されます。
Sleep関数は、IE(InternetExplorer)を操作する上で必ず利用されるものです。ほとんどのコンテンツで利用されていますので、ここでは代表的なコンテンツを紹介します。
↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。