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

呼出されて勤務した時間帯を管理したいのですが
selectcase文で18:00から2:00まで勤務したら『準夜-深夜』と表記したいのですが『型が合いません』とエラーが出ます
マクロは我流で勉強中なのでよろしくお願いします

Dim 開始時間 As Date, 終了時間 As Date
Dim 開始時間帯 As String, 終了時間帯 As String, 業務時間帯 As String

Private Sub 業務ステータス()
開始時間 = TimeValue(開始時間TextBox.Text)
終了時間 = TimeValue(終了時間TextBox.Text)
Select Case 開始時間
Case 開始時間 > TimeValue("8:29") And 開始時間 < TimeValue("17:00"): 開始時間帯 = "日勤"
Case 開始時間 > TimeValue("16:59") And 開始時間 < TimeValue("24:00"): 開始時間帯 = "準夜"
Case 開始時間 > TimeValue("0:00") And 開始時間 < TimeValue("8:30"): 開始時間帯 = "深夜"
Case 開始時間 = TimeValue("0:00"): 開始時間帯 = "深夜"
End Select
Select Case 終了時間
Case 終了時間 > TimeValue("8:29") And 終了時間 < TimeValue("17:00"): 終了時間帯 = "日勤"
Case 終了時間 > TimeValue("16:59") And 終了時間 < TimeValue("24:00"): 終了時間帯 = "準夜"
Case 終了時間 > TimeValue("0:00") And 終了時間 < TimeValue("8:30"): 終了時間帯 = "深夜"
Case 終了時間 = TimeValue("0:00"): 終了時間帯 = "深夜"
End Select

If 開始時間帯 = 終了時間帯 Then
業務時間帯 = 開始時間帯
Else
業務時間帯 = 開始時間帯 & "-" & 終了時間帯
End If
End Sub

A 回答 (2件)

質問のエラーは#1さんの通りだけど


caseの使い方も間違いだと思うので修正してみました
もう一度、ヘルプに目を通しておいた方が良いかと

Dim 開始時間 As Date, 終了時間 As Date
Dim 開始時間帯 As String, 終了時間帯 As String, 業務時間帯 As String

Private Sub 業務ステータス()
開始時間 = TimeValue(開始時間TextBox.Text)
終了時間 = TimeValue(終了時間TextBox.Text)
Select Case 開始時間
Case TimeValue("8:29") To TimeValue("17:00"): 開始時間帯 = "日勤"
Case TimeValue("17:00") To 1: 開始時間帯 = "準夜"
Case TimeValue("00:00") To TimeValue("8:30"): 開始時間帯 = "深夜"
End Select
Select Case 終了時間
Case TimeValue("8:29") To TimeValue("17:00"): 終了時間帯 = "日勤"
Case TimeValue("17:00") To 1: 終了時間帯 = "準夜"
Case TimeValue("00:00") To TimeValue("8:30"): 終了時間帯 = "深夜"
End Select

If 開始時間帯 = 終了時間帯 Then
業務時間帯 = 開始時間帯
Else
業務時間帯 = 開始時間帯 & "-" & 終了時間帯
End If
End Sub

日を跨ぐ時は日付も付加しないと、正確な計算が出来ませんよ
今回は時間の計算が無いため、希望の処理になると思いますが・・・
詳しい説明は省きますが、時間の計算が必要な時は気をつけてくださいね
    • good
    • 0
この回答へのお礼

わかりやすい説明&コード訂正、ありがとうございます。

今回初めてSELECT文を使ってみたのでずっと悩んでました(汗)
今まではIFばっかで分岐させてたのでコードが長くなっていたので一歩進んだことをしようとしてドツボはまってました。
これからも精進します。

時間計算のほうは克服済です(笑)ありがとうございました。

お礼日時:2009/05/12 01:54

TimeValue("24:00")



TimeValue("0:00")

関係無いお話だけど、Case文じゃなくIf文の方がよろしいかと。
    • good
    • 0
この回答へのお礼

ありがとうございました。
いろいろネット、本を見てもなかなか使いこなすまでが大変ですね

職場では私しかマクロしてないので、相談するブレインもいないので(泣)

お礼日時:2009/05/12 01:58

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