エクセルVBAのFunctionについて
エクセル2000です。
以下は、時間を与えれば、それに相当する挨拶が返ってくるFunctionのつもりです。
一応期待通りの働きはしてくれます。
質問は、Functionから ”messe” として返ってくる文字列を、Function内部で生成している、”hmsg”、”mes”、”s”、”kao(i)” にわけて取得できないかということです。
もちろん Functionを複数つくったり、返ってくる文字列”messe”を、”。”の位置を取得してMID関数等で分ければ取得できるのはわかるのですが、そんな手間をかけず、たとえば、MsgBox hmsg のような感じで簡単に ”hmsg”、”mes”、”s”、”kao(i)” それぞれの文字列を取得する方法があったらご教示くださいませ。
Sub test01()
MsgBox messe(TimeValue("17:46"))
End Sub
Function messe(t As Date) As String
Dim t2 As Integer, t3 As Integer, m As Integer, i As Integer, n As Integer
Dim kao
Dim s As String
t2 = Hour(t)
t3 = Hour(TimeValue(t) + TimeValue("01:00"))
m = Minute(t)
kao = Split("o(^o^)/,(*^o^*),(*´∇`*),(= ̄▽ ̄=)V,(〃^∇^〃),(=´▽`)ゞ,(^∇^),(〃^∇^)o,ヾ(@⌒ー⌒@)ノ, (#^。^#),o(^-^)o,ヾ(=^▽^=)ノ, \(*^▽^*)/ ,( ̄ー ̄)v", ",")
Select Case t2
Case Is < 11: hmsg = "おはようございます。"
Case Is < 17: hmsg = "こんにちは。"
Case Else: hmsg = "こんばんは。"
End Select
Select Case m
Case Is < 15: mes = t2 & "時を回りましたね。 "
Case Is < 30: mes = "もうすぐ " & t2 & "時半になりますね。 "
Case Is < 45: mes = t2 & "時半を過ぎてますね。"
Case Else: mes = "もうすぐ " & t3 & "時になるんですね。 "
End Select
Select Case t2
Case 0: s = "とうとう日付が変わりました。 "
Case 1, 2, 3, 4: s = "からだに気をつけてね。 "
Case 5, 6: s = "朝になっちゃいました。 "
Case 7, 8, 9: s = "また一日が始まりましたね。 "
Case 10: s = "お昼にはまだもうちょっと・・・。 "
Case 11: s = "おなかが空いちゃいました。 "
Case 12: s = "お昼ですよ~。 "
Case 13: s = "食後は眠くなっちゃいます。 "
Case 14: s = "そろそろおやつが欲しいかも。 "
Case 15, 16: s = "午後は長いですね。 "
Case 17: s = "お疲れさまです。 "
Case 18: s = "残業、お疲れさまです。 "
Case 19, 20: s = "そろそろ切り上げませんか。 "
Case 21, 22: s = "こんな遅くまで大変ですね。 "
Case 23: s = "日付が変わっちゃいますよ。 "
Case Else: s = "がんばってね。 "
End Select
Randomize
i = Int(Rnd() * 14)
messe = hmsg & mes & s & kao(i)
End Function
お礼
すばやい回答ありがとうございます。 Case 1 To 5 を使って無事使えるようになりました。 ありがとうございました。