• ベストアンサー

秒以下は取得できないですか?

WindFallerの回答

  • ベストアンサー
回答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

BLKEIYIL
質問者

お礼

どうもありがとうございました。

関連するQ&A

  • アプリケーションの横幅の値を取得したい vba

    アクセスのアプリケーションの横幅の値をvbaで取得する事は可能でしょうか? Sub サンプル() Debug.Print Application.Width End Sub はエラーになっちゃいました。

  • VBA 「何時間何分何秒」にするにはどうすればいい

    Declare Function GetTickCount Lib "KERNEL32" () As Long Sub Sample() Debug.Print GetTickCount & "ミリ秒" End Sub これで取得される値を 「何時間何分何秒」にするにはどうすればいいでしょうか? Format(GetTickCount, "hh:mm:ss") にするとなぜかオーバーフローしてしまいました。

  • VBAコードでイミディエイトウィンドウを表示する方

    VBAコードでイミディエイトウィンドウを表示する方法はありますか? 例えば、 Sub test() Debug.Print Now End Sub を実行したときに イミディエイトウィンドウが表示されていなければ結果がわかりませんよね。 Ctrl+Gでイミディエイトウィンドウを表示出来る事は知っていますが サブプロシージャーと実行とともに、 イミディエイトウィンドウをVBAで表示する方法を教えてください。 Sub test() Debug.Print Now イミディエイトウィンドウを表示 End Sub のようにしたいです。 ご回答よろしくお願いします。

  • NowとNow()とどちらを使った方が良いですか?

    どちらも結果は同じでした。 Sub test1() Debug.Print Now End Sub Sub test2() Debug.Print Now() End Sub TechNet

  • LocationNameを取得するとアウトルックが

    エクセルvba2010です。よろしくお願いします。 Sub Sample() Dim ie As Object For Each ie In CreateObject("Shell.Application").Windows() Debug.Print ie.LocationName Next End Sub このコードで、現在開いているURL名を取得すると、 アウトルックを立ち上げてると outlook:%26%2321463・・・ と言うのが取得されるのですが、これは何のパスでしょうか? メールは立ち上げていません。

  • ミリ秒を○時間○分○秒にしたい

    http://www.excellenceweb.net/vba/api/what_windows_api.html のページを参考にPC起動時間を取得したいのですが サンプルは単位がミリ秒になっています。 -------------------------------------------------- Declare Function GetTickCount Lib "kernel32.dll" () As Long Sub TEST1() Dim Tickcount As Long 'GetTickCount関数から、起動からの時間が返される Tickcount = GetTickCount() MsgBox "PC起動から " & Tickcount & " ミリ秒経過しています" End Sub -------------------------------------------------- ○時間○分○秒にしたいのですが どうすればいいでしょうか? Formatを使うと思うのですが どういうコードを書けばいいのかわかりません。 ご教授よろしくお願いします。

  • computerNameを取得したい

    UserNameではなく、computerNameを取得したい エクセルで複数人でファイルを開いてる場合、 コンピューター名を取得したいのですが Sub test1() Dim v As Variant v = ActiveWorkbook.UserStatus Debug.Print v(1, 1) End Sub これをやると、UserNameが取得されます。 UserStatusの中には、computerNameは格納されないのでしょうか? Sub test() Debug.Print Environ("computerName") End Sub で、自身のコンピューター名は取得できるのですが 複数ファイルを開いているときのみんなのコンピューター名を取得する方法を教えてください。

  • 何が間違ってるのか教えていただけませんか?

    VBAエクセルです。 *********************************************** Sub OSのDefaultPrinterを取得() Dim プリンタ As Object Set プリンタ = CreateObject("WScript.Network") Debug.Print プリンタ.SetDefaultPrinter End Sub *********************************************** を実行すると、 (Debug.Print プリンタ.SetDefaultPrinter)の部分で、 引数の数が一致していません。または不正なプロパティを指定しています。(Error 450) となってしまいます。 どう修正すれば、現在のデフォルトのプリンター名を取得できるのでしょうか? ちなみに Sub tset() Debug.Print ActivePrinter End Sub で取得出来る事は知っています。 ご回答よろしくお願いします。

  • AddressとAddressLocal 違い

    エクセルvbaなのですが Sub test01() Debug.Print Range("a1").Address Debug.Print Range("a1").AddressLocal End Sub この二つの違いは何ですか? どちらも$A$1が返るのですが。 アドレスを取得したい場合、どちらを使った方がよろしいでしょうか?

  • ●分●秒 時間 表示形式

    時間を取得するコードを使っていますが Declare Function timeGetTime Lib "winmm.dll" () As Long Sub Sample() Dim nStart As Long Dim nEnd As Long nStart = timeGetTime() nEnd = timeGetTime Debug.Print (CDbl(nEnd) - CDbl(nStart)) / 100 & "秒" End Sub これだと結果が、 11607271.9221569秒 秒になってしまいました。 ●分●秒で取得したいのですが、 どのような書式にすればよいですか?