プロが教えるわが家の防犯対策術!

VBAのオーバーフローについて質問です。


画像の通り、日付(シリアル値)と時間(hhmmss)を組み合わせたユニークidがあります。

「ユニークid」に代入する際に「時間」&「日付」だと問題ないのですが、逆の「日付」&「時間」だとオーバーフローしてしまいます。

桁数は変わらないのになぜオーバーフローするのでしょうか?
「」
になみに、ユニークidをstringにするといけます。

「VBAのオーバーフローについて質問です。」の質問画像

質問者からの補足コメント

  • 訂正
    時間と日付の順を代えてもダメでした。
    idをstringの文字列にした場合のみいけます。

      補足日時:2021/12/02 02:45
  • すみません。解決しました!
    桁数の問題でした。
    ユニークidをDoublE型にすることで数値で対応できました

      補足日時:2021/12/02 03:04

A 回答 (2件)

これでも良かったのでは?(バージョンによるかもですが)


LongLong型

例:
? Clnglng(Clng(date) & Clng(format(now(),"hhmmss")))
44534205948
    • good
    • 0

おはようございます。



既に解決済との事ですので、一応理由が下記になりますね。
Long:長整数型:4バイト(-(256^4/2) ~ (256^4/2)-1)の範囲、
-2,147,483,648~2,147,483,647 の整数が取り扱えます。
この上限を超えたために、エラーとなっていますね。

ユニークID=時間&日付 を、Msgbox 時間&日付 にされると、実際に
どの様な数字になっているかを確認できるかと思います。

参考になるか不明ですが、下記の様な感じでも、できますかね?
(値は、質問者さんと違いますが、1秒毎にオリジナルの数字が作成でき、
 過去から未来まで、一切重複しない値になるかと。)

MsgBox Now() * 24 * 60 * 60
    • good
    • 0

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