• ベストアンサー

時間帯の識別がしたいのですが…

呼出されて勤務した時間帯を管理したいのですが 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

質問者が選んだベストアンサー

  • ベストアンサー
  • hige_082
  • ベストアンサー率50% (379/747)
回答No.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 日を跨ぐ時は日付も付加しないと、正確な計算が出来ませんよ 今回は時間の計算が無いため、希望の処理になると思いますが・・・ 詳しい説明は省きますが、時間の計算が必要な時は気をつけてくださいね

Alshark
質問者

お礼

わかりやすい説明&コード訂正、ありがとうございます。 今回初めてSELECT文を使ってみたのでずっと悩んでました(汗) 今まではIFばっかで分岐させてたのでコードが長くなっていたので一歩進んだことをしようとしてドツボはまってました。 これからも精進します。 時間計算のほうは克服済です(笑)ありがとうございました。

その他の回答 (1)

  • mindatg
  • ベストアンサー率48% (110/227)
回答No.1

TimeValue("24:00") ↓ TimeValue("0:00") 関係無いお話だけど、Case文じゃなくIf文の方がよろしいかと。

Alshark
質問者

お礼

ありがとうございました。 いろいろネット、本を見てもなかなか使いこなすまでが大変ですね 職場では私しかマクロしてないので、相談するブレインもいないので(泣)

関連するQ&A