Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Microsoft 365)
セルに時間を記載して、msgboxに表示させたら、タイムスタンプになってしまう
投稿日時: 23/05/31 14:31:23
投稿者: takatada72

お疲れさまです。
G1のセルに10:00:00と記載して、VBAで、Msgboxを実行すると、→0.416666666666667 が
表示されてしまいました。
 
書式設定を時間に変えたり、GPtに確認したり、検索したのですが、解決には至りませんでした。
※GPTでは、0.416666666666667は、タイムスタンプになっていると言われました。
セルの表示をそのままMsgboxに表示させたいのです。
 
ご存知の方がおりましたら宜しくお願い致します。

回答
投稿日時: 23/05/31 15:17:07
投稿者: QooApp

MsgBox (CDate(Range("A1").Value))
 
https://daitaideit.com/vba-cdate-timevalue/
 
キャストする必要があります

回答
投稿日時: 23/05/31 15:55:13
投稿者: VBA-stepup

Sub test()
Range("A1").Value = "15:30"
MsgBox Range("A1").Value
End Sub
ChatGPT
 
提供していただいたコードは、セルA1に「15:30」という時間設定し、その値をメッセージボックスに表示するものです。 コードは正常に動作するはずです。
 
ただし、表示される時間は、コンピューターのローカルな時刻設定に基づいているため、表示形式は別途準じます。でしょう。
 
もし、特定の時間形式で表示したい場合は、フォーマット関数を使用して表示形式を指定する必要があります。例えば、「hh:mm」と指定すれば、「15:30」ではなく「15:30」 「と表示されます。
 
以下に、フォーマット関数を使用して特定の時間形式で表示する方法を示します。
 
VBA
 
コードをコピーする
Sub test()
    Range("A1").Value = "15:30"
    MsgBox Format(Range("A1").Value, "hh:mm")
End Sub
上記のコードを実行すると、「15:30」と
 
ChatGPTにどのように質問したのでしょうか?
上はChatGPTに質問と回答をそのままコピーしました。
回答がおかしな所もあります。
題材をうまく質問できればかなりの制度でコードが返ってきます。
VBAの勉強とかには向かないと思います。
 
他には
MsgBox Range("A1").Text

回答
投稿日時: 23/05/31 16:02:32
投稿者: WinArrow

時刻をセルに入力した時は、幾つかの取説を認識する必要があります
セルには、Valueプロパテイ Textプロパテイがあります。
Msgbox Range("A1")
のようにプロパテイを省略すると、Valueプロパテイとみなされます。
 
Msgbox Range("A1").Text
では、表示通り表示されます。

回答
投稿日時: 23/05/31 16:47:49
投稿者: WinArrow

今回は、時刻表示のセル値をMSGBOXで表示しする
きわめて単純な使い方ですが、
計算(判定も計算です)に使う場合は、
時刻が小数点以下の数値であることに起因するいくつかの問題に出くわすことがあると思います。
QooAppさん、紹介のURLでシリアル値の取説を勉強することをお勧めします。
 

投稿日時: 23/06/01 10:06:01
投稿者: takatada72

WinArrowさん
 
ありがとうございます。
表示するスタイルをテキストで指定しなければいけなかったのが原因だったのですね
 
Msgbox Range("A1").Text
 
また、ご投稿頂きました、みなさま、ありがとうございました。
 
無事、解決に至りましたので解決とさせて頂きます。