アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在時間を判断してあいさつを出すVBAを書こうとしましたがうまくいきません。
どこが悪いのかご教示くださいませ。

Sub メッセージ()
Dim MG As String
Select Case Time
Case Time < "16:00:00"
MG = "こんにちは。"
Case Time < "12:00:00"
MG = "おはようございます。"
Case Time >= "16:00:00"
MG = "こんばんは。"
End Select
MsgBox MG
End Sub

A 回答 (5件)

設定の順番が間違えてます。

これでは"おはようございます"は表示されません。
Case の後はTimeではなくIs
時間は小数に直すか、分数にした方が間違いないです。
最後の条件はElseにすれば残った条件に対応します。
Sub メッセージ()
Dim MG As String
Select Case Time
Case Is < 1 / 2
MG = "おはようございます。"
Case Is < 2 / 3
MG = "こんにちは。"
Case Else
MG = "こんばんは。"
End Select
MsgBox MG
End Sub

この回答への補足

> 時間は小数に直すか、分数にした方が間違いないです。

12時=24時*1/2
16時=24時*2/3 ですね?ここまではわかりました。
でも、すみません。なぜなの?

もう1点

> 設定の順番が間違えてます。

Case Is < 2 / 3 を先に持ってくると 1 / 2もこれにはいってしまい、これで変数MGが「こんにちは」に決定してしまうということですね?

補足日時:2004/11/05 14:27
    • good
    • 0

私もよく勘違いします。


Select Case 何々
Caseの後は、何々なしで、値を書けば良い。
(A)「値」にピッタリのものを目指す時は、値だけを
記述
しかしなぜか
(B)(=を除き)比較演算子<などを使うときは
IS(IS演算子)が要る。
深い理由はあるのだろうが、無しにして欲しいと思ったものです。
余分ですが、他の言語などでは、時刻を定数として表現する場合に#で囲む必要があったりで、要注意。
    • good
    • 0
この回答へのお礼

> 比較演算子<などを使うときは
> IS(IS演算子)が要る。

不思議ですねえ。
ありがとうございました。

お礼日時:2004/11/05 14:32

Sub メッセージ()


Dim MG As String

Select Case Time
Case Is < "16:00:00"
MG = "こんにちは。"
Case Is < "12:00:00"
MG = "おはようございます。"
Case Is >= "16:00:00"
MG = "こんばんは。"
End Select

MsgBox MG

End Sub
ってのでどうでしょう?
    • good
    • 0
この回答へのお礼

ありがとうございます。

でも、この順番だと「おはよう」がでないのじゃありません?

お礼日時:2004/11/05 14:31

case では判断文は使用できません。


以下のようにします。
-----------------------------------------
Dim MG As String
Select Case Hour(Time)
  Case 0 To 12
    MG = "おはようございます。"
  Case 13 To 16
    MG = "こんにちは。"
  Case Else
    MG = "こんばんは。"
End Select
MsgBox MG
    • good
    • 0
この回答へのお礼

あら!
シンプルですね!
出来ました。
ありがとうございます♪

お礼日時:2004/11/05 14:23

こんにちは。



String対Stringって、比較できるんですか?
(^^ゞ

この回答への補足

え?
String対Stringの比較になってます?

補足日時:2004/11/05 14:16
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています