No.3ベストアンサー
- 回答日時:
>Debug.Print Now
必要がなかったので、考えてもみなかったのですが、確かに、
Sub Test1()
Dim myDate As Date
Dim myTime As Date
Dim ret As Double
ret = Time
MsgBox Format(ret, "hh:nn:ss.000")
End Sub
これでは、秒以下の数字は取れないようですね。確か、ワークシート側には、秒以下の表示はあったはずです。
以下のような、Win32 APIは、マニアックな世界なので、あまりお勧めしませんが、GetLocalTime を使って、以下のようにしてみたらいかがですか?実際は、秒以下そのものを用いるというよりも、自家製イベントなどに用いたりすることになるのでしょうから、その場合は、劇薬ですから、くれぐれも慎重にお使いください。
'//標準モジュール
Private Declare Sub GetLocalTime Lib "kernel32" (lpSystem As SYSTEMTIME)
Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private sysLocalTime As SYSTEMTIME
Sub Test2()
GetLocalTime sysLocalTime
MsgBox sysLocalTime.wHour & ":" & _
sysLocalTime.wMinute & ":" & _
sysLocalTime.wSecond & ":" & _
sysLocalTime.wMilliseconds
End Sub
No.2
- 回答日時:
3.4 1/1000秒単位の時間を取得
http://www.happy2-island.com/excelsmile/smile04/ …
時間を取得するときは、VBAのTime関数(※)で取れますが、Time関数で取得できるのは1秒単位です。ゲームを作る場合には「0.02秒毎に…」や「アニメーションの間隔は1.57秒」など1/100秒単位の制御をすることが多いのでTime関数では物足りません。
こんな場合(1/1000秒を取得したい場合)は、APIのGetTickCount関数、またはtimeGetTime関数を使います。ちなみに、この関数で取得できる値はWindowsが起動してから何ミリ秒経過したかという値です。
GetTickCount関数、またはtimeGetTime関数は、どちらを使ってもほとんど同じ情報を取得できますが、推奨はGetTickCount関数です。
また、これらの関数では一応1/1000秒までの時刻を取得できますが、1/1000の位はかなりいい加減なので、基本的には1/100秒単位の時間を計るときに使うと考えてください。
--------------------------------------------------------------------------------
※Timer関数という関数で1/100単位の時間を取得できますが、日付が変わるたびに0に戻るという性質上から省略しています。なお、GetTickCount関数、またはtimeGetTime関数は、Windows起動から50日弱は0に戻りません。
GetTickCount関数を定義する
API「GetTickCount関数」または「timeGetTime関数」を使うときですが、まずはこの関数がどこにある、どんなヤツなのかなど、この関数を使うための準備(宣言)を行います。
この関数を使うときは、標準モジュールを準備し(General)(Declarations)の所へ次のように記述します。なお、標準モジュールの追加方法はエクセルスマイルの「4.マクロを書く場所/標準モジュール」をどうぞ。
'標準モジュールの(General)(Declarations)へ記述します
Declare Function GetTickCount Lib "kernel32" () As Long
Declare Function timeGetTime Lib "winmm.dll" () As Long
※このエクセルマクロは標準モジュール内へ記述するマクロです
簡単に説明すると、DeclareはDLLの中にある関数を呼び出すときに付ける物で、Functionは関数の宣言、次が関数名(GetTickCountまたはtimeGetTime)、Libで関数の居場所を指定します。居場所には、GetTickCountにはkernel32を、timeGetTimeにはwinmm.dllを指定してください。なお、これらの関数の戻り値はLong型です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) bashで15分前と現在のエポックタイムの時間を取得したい 2 2023/02/01 19:10
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
format関数について
Visual Basic(VBA)
-
VisualBasic6.0のFormat関数でmSecを表示したい
Visual Basic(VBA)
-
VBAでミリ秒まで出力する方法
Visual Basic(VBA)
-
-
4
VBAのプログラムで、DIAG = 1# / A(L, L) や R(
その他(プログラミング・Web制作)
-
5
或るプロシージャの呼び出し元判定
その他(Microsoft Office)
-
6
エクセル VBA 小数点を含む数字抽出について
Excel(エクセル)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
VBAでActiveDirectoryのユーザ...
-
ListViewで複数選択された項目...
-
EXCELのリストボックスを選択し...
-
利用者側のMACアドレスを取得し...
-
ドロップダウンリストの初期表...
-
JavaScriptでWindowsログオンID...
-
NTPサーバから時刻を取得する
-
vbaで、オートシェイプ文字幅と...
-
like演算子内に変数って使えな...
-
C言語におけるコンピュータ名・...
-
Flexgridで選択行の列の値を取...
-
URIでのページの移動について
-
現在時刻をミリ秒まで取得
-
JTableクリック時の処理
-
自動的に高さ指定していないt...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
データ数をカウントしたいのですが
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
ListView 項目の選択/選択解除...
-
Flexgridで選択行の列の値を取...
-
getParameter と getAttribut...
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
JavaScriptでWindowsログオンID...
-
時間を分に変換するプログラム
-
エクセルVBAで複数選択できるよ...
-
Spreadの選択行の取得について
-
JavaScriptにおいてコンピュー...
-
コンボボックス表示文字列を取...
-
VBA リストボックス内の値を複...
-
利用者側のMACアドレスを取得し...
-
「Excel VBA」 Webクエリ マク...
-
EXCELのリストボックスを選択し...
おすすめ情報