こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VB2008でGetSystemTimeが正常に動作しません。

VB2008でWIN32APIのGetSystemTimeを使用するコードを記述しましたが
SYSTEMTIME構造体に正しい値がセットされません。
ExcelのVBAにて同様のコードを記述し実行したところこちらは問題が
ないようです。
コードの記述に誤りがあるのか、それとも設定なのかいろいろ調べて
みましたが解決しませんでした。
どうか皆様のお力添えをお願いいたします。

■環境
Windows xp HOME SP3
VisualBasic Express Edition SP1

■VB 2008 コード
---------------------------------------------------
Public Structure SYSTEMTIME
Public wYear As Integer
Public wMonth As Integer
Public wDayOfWeek As Integer
Public wDay As Integer
Public wHour As Integer
Public wMinute As Integer
Public wSecond As Integer
Public wMilliseconds As Integer
End Structure

Public Declare Sub GetSystemTime Lib "kernel32" Alias "GetSystemTime" ( _
ByRef lpSystemTime As SYSTEMTIME)


Public Sub Wait()

Dim st As SYSTEMTIME
Call GetSystemTime(st)
Debug.Print (st.wYear & "/" & st.wMonth & "/" & st.wDay & " " & st.wHour & ":" & st.wMinute & ":" & st.wSecond & ":" & st.wMilliseconds)
  End Sub

---------------------------------------------------
VB 2008 実行結果
657369/393218/35782700 0:0:0:0


■Excel2003 VBA コード
---------------------------------------------------
Public Declare Sub GetSystemTime Lib "kernel32" ( _
ByRef lpSystemTimeLib As SYSTEMTIME)

Public 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 Sub TES()
Dim st As SYSTEMTIME
Call GetSystemTime(st)

Debug.Print (st.wYear & "/" & st.wMonth & "/" & st.wDay & " " & st.wHour & ":" & st.wMinute & ":" & st.wSecond & ":" & st.wMilliseconds)
End Sub
---------------------------------------------------
Excel 2003 SP3 実行結果
2009/10/6 6:19:37:453

投稿日時 - 2009-10-06 20:25:51

QNo.5347008

困ってます

質問者が選んだベストアンサー

下記でそれぞれのIntegerのサイズを確認してください。
その上で、適正な型で宣言しなおしてください。

VBA、VB6のデータ型のサイズ
http://www.geocities.jp/cbc_vbnet/kisuhen/hensuu.html#datapatern

.NETのデータ型のサイズ
http://homepage1.nifty.com/rucio/main/kiso/DataType.htm

投稿日時 - 2009-10-06 21:06:23

お礼

cistronezk様

有り難うございます!解決いたしました。
検索で参考にしていた幾つかのサイトでもご指摘のように
Short型で宣言されていました…
SYSTEMTIMEはAPIビュワーを使用して貼り付けしていましたので、
盲目的に信用してしまっていました。これでは「いろいろ調べた」
等と言っている自分が情けないかぎりです。
もう一度、基礎からやり直す事にいたします。
この度は本当に有り難うございました!!

投稿日時 - 2009-10-06 23:53:57

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問