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

お世話になっております。

今回、Select caseとToを使った範囲指定による計算を処理を行っています。
2点ほど、うまく処理できない部分があり、お聞きしたいです。
以下該当部分
---------------------------------------------------------------------------------------------------------
For i = 8 To38
Select Case Cells(i, 11)

Case TimeValue("5:00") To TimeValue("7:00")

Cells(i, 34) = Cells(1, 34) - Cells(i, 11)

Case TimeValue("0:00") To TimeValue("4:59") And Cells(i, 14) >= TimeValue("7:00")

Cells(i, 34) = TimeValue("2:00")

Case TimeValue("22:00") To TimeValue("23:59") And Cells(i, 14) >= TimeValue("7:00")

Cells(i, 34) = TimeValue("2:00")

Case TimeValue("0:00") To TimeValue("4:59") And Cells(i, 14) < TimeValue("7:00")

Cells(i, 34) = Cells(i, 11) - Cells(1, 35)

Case TimeValue("22:00") To TimeValue("23:59") And Cells(i, 14) < TimeValue("7:00")

Cells(i, 34) = Cells(i, 11) - Cells(1, 35)

End Select

If Cells(i, 14).Value >= TimeValue("24:00") And Cells(i, 14).Value < TimeValue("29:00") Then

Cells(i, 34).ClearContents

End If

Next i
---------------------------------------------------------------------------------------------------------

求めている処理は該当セルが

①5:00~7:00の間である場合、特定セルから該当セルの値を引く
②0:00~4:59の間であり、且つ3つ隣のセルの値が7:00以降である場合、2:00を入力
③22:00~23:59の間であり、且つ3つ隣のセルの値が7:00以降である場合、2:00を入力
④0:00~4:59の間であり、且つ3つ隣のセルの値が7:00以前である場合、該当セルから特定セルの値を引く
⑤22:00~23:59の間であり、且つ3つ隣のセルの値が7:00以前である場合、該当セルから特定セルの値を引く

というものになっています。
しかし、実際に実行すると、②と④が反応しないという状況です。
何か間違っている箇所はありますでしょうか。

また、End Select~Next i間のIf文ですが実行しようとすると「型が一致しません」となり実行できません。(現在、コメントアウトをして実行しています)
これは、29:00などが、数字としてではなく、文字列として認識されているということでしょうか。
そのような場合、対処法などはございますでしょうか。

以上、ご回答の程、宜しくお願い致します。

質問者からの補足コメント

  • 一つ目の質問に関して自己解決しました。
    文字数が足りずこちらに記載できませんが
    SelectCaseの中にSelectCaseを使うことで解決しました。

    2つ目の質問に関しましては、引き続きご回答お待ちしております。
    宜しくお願い致します。

      補足日時:2018/06/21 13:35

A 回答 (2件)

If Cells(i, 14).Value >= 1 And Cells(i, 14).Value < 1 + TimeValue

("5:00") Then
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
1を24時間と考えたらよいのですね。
早速実行したところ、思ったとおりの処理ができました。
大変助かりました。
ベストアンサーにさせていただきます。

お礼日時:2018/06/21 16:00

検証してませんけど。



IfTimeValue(Cells(i, 14).Text) >= TimeValue("24:00") And TimeValue(Cells(i, 14).Text) < TimeValue("29:00") Then

としてみるとか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
そちらで試しましたが、同じく、型が一致しないとのことで実行できませんでした。
申し訳ありません。

お礼日時:2018/06/21 14:42

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

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