Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


43205 / 76732 ←次へ | 前へ→

【38579】Re:料金計算マクロ
発言  sin  - 06/6/6(火) 16:13 -

引用なし
パスワード
   横から失礼します。

▼ハト さん:
またコッソリ勉強させていただいてました^^
今回も上手いロジックですね。

それでちょっとよく分からないのですが、
私のところで12:00以降の結果が合わないのですが・・・

↓このようにハトさんのものにテストを埋め込んでみました。

Sub Test_Time()

Dim ws As Worksheet
Dim STime As Date
Dim ETime As Date
Dim NTime As Date
Dim TTime As Date
Dim ATime As Date
Dim i As Long
Dim TVal As Long
Dim NVal As Long

  Set ws = ThisWorkbook.Worksheets("Sheet1")
  ws.Columns("a:b").ColumnWidth = 12

  ATime = TimeValue("6:00")
  For i = 1 To 14
    ws.Cells(i, 1) = ATime
    ATime = ATime + TimeValue("1:00")
    ws.Cells(i, 2) = ATime
  Next i

  For i = 1 To 14
    TVal = 0
    NVal = 0

    STime = TimeValue(ws.Range(Cells(i, 1), Cells(i, 1)).Text)
    ETime = TimeValue(ws.Range(Cells(i, 2), Cells(i, 2)).Text)

    If STime > ETime Then
      NTime = TimeValue("23:59")
    Else
      NTime = ETime
    End If

    TTime = STime

    Do
      Select Case TTime
        Case Is > TimeValue("23:29")
          NVal = NVal + 300
          If NTime = ETime Then Exit Do
          TTime = TTime - TimeValue("23:30")
          NTime = ETime
        Case Is >= TimeValue("20:00")
          TTime = TTime + TimeValue("0:30")
          NVal = NVal + 300
        Case Is >= TimeValue("6:00")
          TTime = TTime + TimeValue("0:20")
          TVal = TVal + 400
        Case Else
          TTime = TTime + TimeValue("1:00")
          NVal = NVal + 200
      End Select

      If TTime >= NTime Then Exit Do
    Loop

    If NVal > 1500 Then NVal = 1500
    TVal = TVal + NVal

    ws.Cells(i, 3) = TVal
  Next i
End Sub


これを実行すると開始が12:00以降だと結果が1200ではなく1600になってしまいます。
そして13:00〜13:20ではちゃんと結果が400になるのですが
13:00〜13:40では結果が800のはずが1200になっています。
(〜13:39は800〜13:41は1200で問題ありません)
どうも”12:00以降だけ”2回以上ループすると
>      If TTime >= NTime Then Exit Do
の"="が働いていないような感じです。

ちょっと原因がよく分かりません。エクセルの設定か何かでしょうか?

ちなみ【38537】のDateAddを使用したものでは問題は起きませんでした。
1 hits

【38516】料金計算マクロ mai 06/6/5(月) 16:16 質問
【38524】Re:料金計算マクロ ハト 06/6/5(月) 18:11 回答
【38526】Re:料金計算マクロ ハト 06/6/5(月) 18:34 発言
【38579】Re:料金計算マクロ sin 06/6/6(火) 16:13 発言
【38606】Re:料金計算マクロ ハト 06/6/7(水) 10:31 発言
【38618】Re:料金計算マクロ ハト 06/6/7(水) 13:52 発言
【38623】Re:料金計算マクロ sin 06/6/7(水) 15:53 発言
【38629】Re:料金計算マクロ ハト 06/6/7(水) 16:29 発言
【38537】Re:料金計算マクロ ハト 06/6/6(火) 10:32 回答
【38602】Re:料金計算マクロ roxy 06/6/7(水) 9:29 お礼
【38608】Re:料金計算マクロ roxy 06/6/7(水) 10:40 質問
【38612】Re:料金計算マクロ ハト 06/6/7(水) 11:06 発言
【38532】Re:料金計算マクロ ichinose 06/6/6(火) 8:57 発言
【38533】Re:料金計算マクロ 訂正 ichinose 06/6/6(火) 9:10 発言
【38601】Re:料金計算マクロ 訂正 roxy 06/6/7(水) 9:27 お礼
【38624】Re:料金計算マクロ 訂正 ichinose 06/6/7(水) 16:02 発言
【38627】Re:料金計算マクロ 訂正 ハト 06/6/7(水) 16:23 発言
【38645】Re:料金計算マクロ 訂正 roxy 06/6/7(水) 17:58 発言
【38690】Re:料金計算マクロ 訂正 sin 06/6/8(木) 15:54 発言

43205 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free