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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VisualBasic6.0のFormat関数でmSecを表示したい
Visual Basic(VBA)
-
VBAでミリ秒まで出力する方法
Visual Basic(VBA)
-
format関数について
Visual Basic(VBA)
-
-
4
VBAのプログラムで、DIAG = 1# / A(L, L) や R(
その他(プログラミング・Web制作)
-
5
エクセル VBA 小数点を含む数字抽出について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
count(*)で取得した値をJAVAの...
-
VB.NETで DataRow()を利用して...
-
VBA:小数点以下の数字を取得で...
-
ListView 項目の選択/選択解除...
-
サーバ時刻の取得
-
データ数をカウントしたいのですが
-
利用者側のMACアドレスを取得し...
-
VBAでActiveDirectoryのユーザ...
-
like演算子内に変数って使えな...
-
URIでのページの移動について
-
Flexgridで選択行の列の値を取...
-
Spreadの選択行の取得について
-
C#でのコンピュータ名変更につ...
-
PostgresSQL JDBC で Select結...
-
JAVA 入れ子MAPの取得時の書き...
-
gethostbyaddrでのホスト名取得...
-
getParameter と getAttribut...
-
HKEY_USERS下のキーを取得したい
-
JavaScriptにおいてコンピュー...
-
VBA Shapesの座標からセル位置...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで DataRow()を利用して...
-
count(*)で取得した値をJAVAの...
-
ListView 項目の選択/選択解除...
-
データ数をカウントしたいのですが
-
VBA:小数点以下の数字を取得で...
-
VBAでActiveDirectoryのユーザ...
-
Flexgridで選択行の列の値を取...
-
like演算子内に変数って使えな...
-
ListViewで複数選択された項目...
-
getParameter と getAttribut...
-
JSP+Servletでのページングの常識
-
JavaScriptでWindowsログオンID...
-
利用者側のMACアドレスを取得し...
-
Spreadの選択行の取得について
-
Excel VBA でログインしてい...
-
コンボボックス表示文字列を取...
-
C言語におけるコンピュータ名・...
-
「Excel VBA」 Webクエリ マク...
-
VBScriptで数値にコンマを付け...
-
エクセルVBAで複数選択できるよ...
おすすめ情報