shin'nosuke さんのアレグロモデラート

アレグロモデラート(Allegro moderato)は、速さを示す演奏記号で「穏やかに速く」

VB でミリ秒を取得する方法

Visual Basic(クラシック)ベースのツールを使うとき、ツールの組み込みの関数だけではミリ秒までを取得できない。C でも標準ライブラリには用意されていない。(はず)

そこで、Windows APIのGetLocalTime 関数を使う。
Visual Basic での API宣言は次の通り。
Public Type SYSTEMTIME
Year As Integer
Month As Integer
DayOfWeek As Integer
Day As Integer
Hour As Integer
Minute As Integer
Second As Integer
Milliseconds As Integer
End Type

Public Declare Sub GetLocalTime Lib "kernel32" _
(lpSystem As SYSTEMTIME)

出典はこちら。
MSDN Online Voices - Office Talk: Office VBA と Windows API

ちなみに、なんでこんなことを調べたかというと、以前から気になっていたというのもあるが、ミリ秒までの入力日時をRDBの主キーにしたかったからなのだが、Access VBA でこれを使ってみると、複数件のペーストをされてしまうとミリ秒でもキーが重複してしまった。
結局、
Public Declare Sub Sleep Lib "kernel32"  _
(ByVal dwMilliseconds As Long)

を同時に定義して、1ミリ秒以上のスリープをかけることで解決。

ちなみにギャバンの蒸着(変身)にかかる時間はわずか0.05秒で、50ミリ秒。シャリバンが赤射する時間とシャイダーが焼結する時間はわずか1 ミリ秒です。あばよ涙!