重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

A 回答 (1件)

下記でそれぞれのIntegerのサイズを確認してください。


その上で、適正な型で宣言しなおしてください。

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

.NETのデータ型のサイズ
http://homepage1.nifty.com/rucio/main/kiso/DataT …
    • good
    • 0
この回答へのお礼

cistronezk様

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

お礼日時:2009/10/06 23:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!