C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.72912 の関連記事表示

<< 0 >>
■72912  文字列型の時刻を日付型へ変換ができない
□投稿者/ nkane -(2014/08/01(Fri) 11:50:04)

    分類:[VB.NET/VB2005 以降] 

    VisualStudio Express 2013 for Windows DesktopにてVBのアプリケーションを作ろうとしています。

    テキストボックスに開始時間と終了時間を入力して、何分経過しているかの計算をする箇所で、
    終了時間を00:00と入力した場合、24:00に変換する処理がうまくできません。

    時間の入力は開始時間の時刻をtxtStartHour1、分をtxtStartMinutes1、終了時間の時刻をtxtEndHour1、
    分をtxtEndMinutes1としています。
    (DateTimePickerでは時刻から分へのカーソル移動がtabキーでできなかったため、上記の方法を採用しました)

    以下、該当のソースです。

    '開始時間と終了時間の値を取得
    Dim starttime1, endtime1 As DateTime

    starttime1 = txtStartHour1.Text.ToString() & ":" & txtStartMinutes1.Text.ToString()
    endtime1 = txtEndHour1.Text.ToString() & ":" & txtEndMinutes1.Text.ToString()
    If endtime1 = "00:00" Then
    endtime1 = DateTime.Parse("24:00")
    End If

    '終了時間と開始時間の差を計算
    Dim jikan As TimeSpan
    jikan = endtime1.Subtract(starttime1)

    '時刻の差がマイナスの値の場合
    If jikan.TotalMinutes < 0 Then

    MsgBox("終了時間が開始時間より過去になっています。" & vbCrLf & "時刻の修正をしてください。", vbCritical)
    txtStartHour1.Focus()

    End If

    上記を実行すると、

    「型 'System.FormatException' のハンドルされていない例外が mscorlib.dll で発生しました

    追加情報:文字列で表される DateTime がカレンダー System.Globalization.GregorianCalendar でサポートされていません。」

    とエラーが表示されます。
    おそらく、「endtime1 = DateTime.Parse("24:00")」の箇所が原因なのだろうと思います。
    いろいろ調べてみましたが、どのようなコードが適切なのかわからなかったので、ご教示よろしくお願いいたします。
親記事 /過去ログ122より / 関連記事表示
削除チェック/

■72921  Re[1]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ 魔界の仮面弁士 -(2014/08/01(Fri) 14:29:44)
    No72912 (nkane さん) に返信
    > 終了時間を00:00と入力した場合、24:00に変換する処理がうまくできません。
    
    仕様が良く分からないのですが、「深夜22時から明朝5時まで」の場合は、
     TextBox1.Text = "22:00"
     TextBox2.Text = "05:00"
    と入力することになるのでしょうか。それとも
     TextBox1.Text = "22:00"
     TextBox2.Text = "26:00"
    と入力する事になるのでしょうか。あるいはそもそも入力できない?
    
    
    提示のコードを見ると、午前1時台については
     TextBox1.Text = "01:00" : TextBox2.Text = "01:00" '経過時間= 0時間0分
     TextBox1.Text = "01:00" : TextBox2.Text = "01:01" '経過時間= 0時間1分
     TextBox1.Text = "01:01" : TextBox2.Text = "01:01" '経過時間= 0時間0分
     TextBox1.Text = "01:01" : TextBox2.Text = "01:00" 'エラー 「過去日付」
    になるのに対して、深夜12時台の場合は
     TextBox1.Text = "00:00" : TextBox2.Text = "00:00" '経過時間= 0時間0分ではなく24時間0分
     TextBox1.Text = "00:00" : TextBox2.Text = "00:01" '経過時間= 0時間1分
     TextBox1.Text = "00:01" : TextBox2.Text = "00:01" '経過時間= 0時間0分
     TextBox1.Text = "00:01" : TextBox2.Text = "00:00" 'エラー 「過去日付」ではなく23時間59分
    となることを期待しているように読取れました。
    
    ということは、終了時刻が 00:01 の場合、開始時刻として許可されるのは
    "00:00" か "00:01" だけとなるのかな…。
    
    
    > 終了時間を00:00と入力した場合、24:00に変換する処理がうまくできません。
    
    仕様を正しく読取れているかどうか、自信が無いのですが、
    『日付部』を扱わずに、時間間隔を計算したいのであれば、
    「時刻(DateTime)」ではなく、「時間(TimeSpan)」として保持しては如何でしょう。
    
    
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim cul = System.Globalization.CultureInfo.InvariantCulture
    
        Dim startTime, endTime As TimeSpan
    
        If Not TimeSpan.TryParseExact(TextBox1.Text, "hh\:mm", cul, startTime) Then
            TextBox1.Focus()
            MsgBox("正しい開始時間を入れてください", MsgBoxStyle.Critical)
            Return
        End If
        If Not TimeSpan.TryParseExact(TextBox2.Text, "hh\:mm", cul, endTime) Then
            TextBox2.Focus()
            MsgBox("正しい終了時間を入れてください", MsgBoxStyle.Critical)
            Return
        End If
    
        '-----> 仕様A
        ' 22:00〜05:00 を 22:00〜26:00 とみなす
        'If startTime > endTime Then
        '    endTime += New TimeSpan(24, 0, 0)
        'End If
        '<----- 仕様A
    
        '-----> 仕様B
        ' 終了時刻22:00〜05:00 を許可せず
        ' 終了時刻22:00〜00:00 は許可する
        If endTime = TimeSpan.Zero Then
            endTime = New TimeSpan(24, 0, 0)
        End If
        If startTime > endTime Then
            TextBox2.Focus()
            MsgBox("終了時間が開始時間より過去になっています。" & _
                   vbCrLf & "時刻の修正をしてください。", vbCritical)
            Return
        End If
        '<----- 仕様B
    
        Dim span = endTime - startTime
        MsgBox(String.Format("経過時間={0}分間({1:%d}日と{1:%h}時間{1:%m}分)", _
                             span.TotalMinutes, span), MsgBoxStyle.Information)
    End Sub
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72927  Re[2]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ nkane -(2014/08/01(Fri) 15:24:44)
    魔界の仮面弁士様
    
    ご回答、誠にありがとうございます。
    
    仕様を記載せず、申し訳ありませんでした。
    
    仕様として、00:00〜24:00までの期間での時間数を算出するため、「深夜22時から明朝5時まで」のケースだと例えるなら
    8月1日 22:00〜24:00
    8月2日 00:00〜05:00
    という2回に分けて算出します。
    
    どうやら、24:00というのが日付型として認識されないようなので、00:00と入力された場合は23:59として
    何分経過したかを算出後に1分だけを数値型にして加算する方法で下記のコードを組んでみました。
    
                '開始時間と終了時間の値を取得
                Dim starttime1, endtime1 As DateTime
                Dim timeflag As Integer '終了時刻を00:00と入力した場合の判定フラグ
    
                starttime1 = txtStartHour1.Text.ToString() & ":" & txtStartMinutes1.Text.ToString()
                endtime1 = txtEndHour1.Text.ToString() & ":" & txtEndMinutes1.Text.ToString()
    
                '24:00は日付型として認識されないため、23:59とし、
                '酸素量の計算時にトータル分数に1を足すこととする。
                If endtime1 = "00:00" Then
                    endtime1 = "23:59"
                    timeflag = 1
                Else
                    timeflag = 0
                End If
    
                '終了時間と開始時間の差を計算
                Dim jikan As TimeSpan
                jikan = endtime1.Subtract(starttime1)
    
                '時刻の差がマイナスの値の場合
                If jikan.TotalMinutes < 0 Then
    
                    MsgBox("終了時間が開始時間より過去になっています。" & vbCrLf & "時刻の修正をしてください。", vbCritical)
                    txtStartHour1.Focus()
    
                Else
    
                    '分に変換した時間と流量の積を算出
                    Dim total As Integer
    
                    If timeflag = 0 Then
                        '終了時間が00:00以外であった場合の計算方法
                        total = Int(jikan.TotalMinutes) * Int(txtRyuryo1.Text)
                    Else
                        '終了時間が00:00であった場合の計算方法
                        total = Int(jikan.TotalMinutes) + 1
                        total = total * Int(txtRyuryo1.Text)
                    End If
    
                    txtTotal1.Text = total
    
                End If
    
    この考え方より良い方法があればご教示をお願いいたします。
    Timespanを活用すればもっと良い方法がありそうな気がしますが、全く思いつきません・・・
    
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72931  Re[3]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ 魔界の仮面弁士 -(2014/08/01(Fri) 17:08:28)
    2014/08/01(Fri) 17:27:55 編集(投稿者)

    No72927 (nkane さん) に返信
    > Dim starttime1, endtime1 As DateTime
    > starttime1 = txtStartHour1.Text.ToString() & ":" & txtStartMinutes1.Text.ToString()

    Date 型の変数に、String 型の値を放り込んではいけません。

    暗黙の型変換に頼るのではなく、代入式の左辺と右辺とで、
    データ型を一致させるクセをつけておきましょう。

    時刻情報を扱うなら、
     dt = #23:59#   '「dt = #11:59:00 PM#」
     dt = TimeSerial(23, 59, 0)
     dt = New DateTime(1, 1, 1, 23, 59, 0, 0)
    などと書けます。
    これらは、いずれも「『西暦1年1月1日』の23時59分0秒ジャスト」を意味します。

    ちなみに、
     span = New TimeSpan(0, 23, 59, 0, 0)
    は、「0日と23時間59分0秒ジャスト」です。
    Date 型と TimeSpan 型の使い分けに注意しましょう。


    > 8月1日 22:00〜24:00

    「日付部」を持つデータであれば、西暦も伴わせて
     Dim dt1 As New DateTime(2000, 8, 1, 22, 0, 0, 0)
    などと管理すればよいかと。

    日付部を持たず、「時間間隔」のみを求めるプログラムだとしたら、
    使うべきは TimeSpan であって、無理に DateTime 型を使う必要は
    無いかと思います。


    まぁ、とりあえずは、TimeSerial 関数を使うのが楽かもしれません。
    TimeSerial 関数なら、「24時0分」や「23時60分」といった
    通常の時刻の範囲外の値も受け付けますから。

    24時以降の日付は翌日以降の日時として返されますが、
    「今日の24時」と「明日の0時」は同じ時刻ですので、
    今回の目的である『経過時間』の算出には支障無いでしょう。


    > どうやら、24:00というのが日付型として認識されないようなので、
    そもそも、VB の Date型(System.DateTime構造体)というのは、
    「日付と時刻」を扱うための型です。
    時刻部だけを保持することは出来ず、日付部の情報を必ず伴います。

    もしも DateTime 型の値を、「日付部だけ」「時刻部だけ」で扱う必要がある場合は、
      dt.Date …… 日付部のみを返す。(時刻部が0時0分ジャストな DateTime 型)
      dt.TimeOfDay …… 時刻部のみを返す。(日数部が0日な TimeSpan型)
    を併用することもできます。


    いずれにせよ、Date型(DateTime型)で時刻を扱う場合には、
    それが「何月何日時点の時刻情報なのか」を意識せねばなりません。


    たとえば、
     dt = DateTime.Parse("23:59")
    とした場合、「『本日』の23時59分0秒ジャスト」を意味します。

    つまり上記の処理は、実行した日付によって、結果が異なってしまうわけです。
    深夜帯に、日またぎでこのプログラムを実行する場合は要注意ですね。


    > 00:00と入力された場合は23:59として
    「何日の23時59分なのか」を意識して処理してみてください。
    1月1日の24時は、1月2日の0時ですよね。


    下記はすべて、「『西暦1年1月2日』の0時0分0秒ジャスト」を意味します。
     dt2 = #00:00#.AddDays(1.0)
     dt2 = #23:59#.AddMinutes(1.0)
     dt2 = TimeSerial(24, 0, 0)

    2 つの日付型の差を求める場合、
     Dim span As TimeSpan = dt2 - dt1
    で算出できます。dt2.Subtract(dt1) でも良いですが。


    この後は、TimeSpan 型のプロパティを使っていけば OK です。
     span.TotalDays
     span.TotalHours
     span.TotalMinutes

     span.Days
     span.Hours
     span.Minutes
    などですね。何分経過したのかを見るなら、TotalMinutes です。
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72934  Re[4]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ nkane -(2014/08/01(Fri) 17:54:24)
    魔界の仮面弁士 様

    ご回答、ありがとうございます。

    いろいろと詳しく教えていただき、誠にありがとうございました。

    データの型について基本的に誤っている点から見直して、作り直してみます。
    ご教示頂いた内容を参考にさせていただきながら作りつつ、他の業務もこなしながらとなると、
    もう少し時間がかかりますので、報告は今しばらくお待ちいただきますようお願いいたします。

    せっかく教えていただいたのに、時間がかかってしまい申し訳ありません。
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72930  Re[3]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ shu -(2014/08/01(Fri) 17:03:29)
    No72927 (nkane さん) に返信
    > 仕様として、00:00〜24:00までの期間での時間数を算出するため、「深夜22時から明朝5時まで」のケースだと例えるなら
    > 8月1日 22:00〜24:00
    > 8月2日 00:00〜05:00
    > という2回に分けて算出します。
    >
    内部情報として
    この例なら
    2014/8/1 22:00:00 〜 2014/8/2 05:00:00
    という情報として保存するようにして
    表示上終了時刻に24:00の表記が必要なのであればそのときに変換して表示されると
    よいのではないでしょうか?
    入力時の24:00を認めるならそのときも入力内容を判断して次の日の00:00として扱うように
    するとよいと思います。
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72933  Re[4]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ nkane -(2014/08/01(Fri) 17:49:37)
    No72930 (shu さん) に返信
    > ■No72927 (nkane さん) に返信
    >>仕様として、00:00〜24:00までの期間での時間数を算出するため、「深夜22時から明朝5時まで」のケースだと例えるなら
    >>8月1日 22:00〜24:00
    >>8月2日 00:00〜05:00
    >>という2回に分けて算出します。
    >>
    > 内部情報として
    > この例なら
    > 2014/8/1 22:00:00 〜 2014/8/2 05:00:00
    > という情報として保存するようにして
    > 表示上終了時刻に24:00の表記が必要なのであればそのときに変換して表示されると
    > よいのではないでしょうか?
    > 入力時の24:00を認めるならそのときも入力内容を判断して次の日の00:00として扱うように
    > するとよいと思います。
    >

    shu 様

    ご回答、ありがとうございます。
    仕様としては1日分だけの分数を計算したいので、一度24:00で終了とします。
    日付の情報は扱わず、時刻だけで計算するので、紛らわしい例を示してしまい申し訳ありませんでした。
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72926  Re[1]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ とっちゃん -(2014/08/01(Fri) 15:16:18)
>
    No72912 (nkane さん) に返信

    > テキストボックスに開始時間と終了時間を入力して、何分経過しているかの計算をする箇所で、
    > 終了時間を00:00と入力した場合、24:00に変換する処理がうまくできません。
    >
    開始と終了が同じ時間を指している場合が考慮されていないようです。

    開始と終了がそれぞれ 00:00 だった場合、
    開始と終了が同じだが、00:00 ではない場合

    それぞれどうなるのでしょうか?

記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72932  Re[2]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ nkane -(2014/08/01(Fri) 17:46:08)
    とっちゃん 様

    ご回答、ありがとうございます。

    開始時間と終了時間が同じ場合は、0分とみなします。
    ただし、00:00〜00:00の場合は24時間*60分として計算します。
    (00:00〜24:00として考えます)
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72935  Re[3]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ 魔界の仮面弁士 -(2014/08/01(Fri) 18:40:24)
    No72932 (nkane さん) に返信
    > 開始時間と終了時間が同じ場合は、0分とみなします。
    > ただし、00:00〜00:00の場合は24時間*60分として計算します。
    > (00:00〜24:00として考えます)

    終了時刻の 00:00 は、常に 24:00 相当とする仕様なのですね?
    24:00〜24:00という入力もしないでしょうし、
    仕様が明確になっているのであれば、問題は無いと思います。


    もし、0分と24時間とを区別させるのであれば、
     開始時刻は、"00:00"〜"23:59" の範囲で入力させる
     終了時刻は、"00:00"〜"24:00" の範囲で入力させる
    という手もありますね。


    No72933 (nkane さん) に返信
    > 日付の情報は扱わず、時刻だけで計算するので、紛らわしい例を示してしまい申し訳ありませんでした。
    何分経過したのかを調べるだけならば、
    「DateTime 型」や「TimeSpan 型」を使うことなく、
    自前で算出しても良いと思います。

     '「00:00からの経過分数」に変換する
     Dim intStart As Integer = CInt(txtStartHour1.Text) * 60 + CInt(txtStartMinutes1.Text)
     Dim intEnd As Integer = CInt(txtEndHour1.Text) * 60 + CInt(txtEndMinutes1.Text)

     '終了側の00:00は、24:00相当とする
     If intEnd = 0 Then
      intEnd = 1440 '= 24 * 60
     End If

     '開始時刻≦終了時刻で無いなら警告
     If intStart > intEnd Then
      txtStartHour1.Focus()
      MsgBox("過去エラー", vbCritical)
      Return
     End If

     '何分経過しているかの計算
     Dim totalMinutes As Integer = intEnd - intStart
     txtTotal1.Text = CStr(totalMinutes)



    なお、テキストボックスの数値入力チェックまでも必要な場合は、
    代わりに NumericUpDown を使ったり、DateTimePicker の時刻入力モードで
    入力させるという選択肢もあります。


    No72934 (nkane さん) に返信
    > データの型について基本的に誤っている点から見直して、作り直してみます。
    「Option Strict On」モードで動作するのが望ましいです。
    そうすれば、日付型に文字列を代入するような「暗黙の型変換」を防げます。


    さらに言えば、『txtStartHour1.Text.ToString()』の ToString も、
    文字列型を無加工で文字列型に変換しているだけで、意味がありません。

    txtStartHour1.Text
    txtStartHour1.Text.ToString()
    txtStartHour1.Text.ToString().ToString()
    txtStartHour1.Text.ToString().ToString().ToString()

    これらは全部同じ値になりますよね。
記事No.72912 のレス /過去ログ122より / 関連記事表示
削除チェック/

■72966  Re[4]: 文字列型の時刻を日付型へ変換ができない
□投稿者/ nkane -(2014/08/05(Tue) 15:17:59)
    No72935 (魔界の仮面弁士 さん) に返信
    このたびは、いろいろ丁寧に教えていただき、誠にありがとうございました。
    教えていただいた方法を元に、目的とする形に仕上げることができました。
    
    > 「Option Strict On」モードで動作するのが望ましいです。
    > そうすれば、日付型に文字列を代入するような「暗黙の型変換」を防げます。
    この「Option Strict On」モードのおかげで、かなり型に誤りがあることがわかり、
    大変勉強になりました。
    時刻にこだわらず、教えていただいたような整数でシンプルに計算する方法には感動しました。
    
    以下、抜粋ではありますがメインとなったコードを記載します。
    
    
        '計算ボタンをクリック
        Private Sub btnKeisan1_Click(sender As Object, e As EventArgs) Handles btnKeisan1.Click
            If txtRyuryo1.Text = "" Then
    
                MsgBox("流量を入力してください。", vbCritical)
                txtRyuryo1.Focus()
    
            Else
    
                Dim intStart1 As Integer = CInt(txtStartHour1.Text) * 60 + CInt(txtStartMinutes1.Text)
                Dim intEnd1 As Integer = CInt(txtEndHour1.Text) * 60 + CInt(txtEndMinutes1.Text)
    
                '終了側の00:00は、24:00相当とする
                If intEnd1 = 0 Then
                    intEnd1 = 1440 '= 24 * 60
                End If
    
                '開始時刻≦終了時刻で無いなら警告
                If intStart1 > intEnd1 Then
                    txtStartHour1.Focus()
                    MsgBox("終了時間が開始時間より過去になっています。" & vbCrLf & _
                           "時刻の修正をしてください。", vbCritical)
                    Return
                End If
    
                '何分経過しているかの計算
                Dim totalMinutes1 As Integer = intEnd1 - intStart1
    
                '経過した分数と流量の積を算出
                Dim total1 As Decimal
    
                If chkJinko1.Checked = False Then
                    total1 = CInt(totalMinutes1) * CInt(txtRyuryo1.Text)
                Else
                    If txtO2noudo1.Text = "" Then
                        MsgBox("酸素濃度を入力してください。", vbCritical)
                        txtO2noudo1.Focus()
                        Return
                    End If
                    '数値が20以上100以内であるかのチェック
                    If 20 <= CInt(txtO2noudo1.Text) And CInt(txtO2noudo1.Text) <= 100 Then
                        txtO2noudo1.Text = String.Format("{00:000}", CInt(txtO2noudo1.Text))
                        Dim O2 As Decimal
                        O2 = CDec(txtO2noudo1.Text) / 100
                        total1 = CInt(totalMinutes1) * CInt(txtRyuryo1.Text) * O2
                        '小数点第二位で四捨五入
                        total1 = CDec(Math.Round(total1, 1, MidpointRounding.AwayFromZero))
                    Else
                        MsgBox("酸素濃度の値が不正です。" & vbCrLf & "数値は20〜100で入力してください。", vbCritical)
                        txtO2noudo1.Text = ""
                        txtO2noudo1.Focus()
                        Return
                    End If
                End If
    
                txtTotal1.Text = CStr(total1)
    
                '流量の累計を行う。
                '総合計が空白(1回目の計算)ならば総合計は1回目の合計を入力
                If txtGrandTotal1.Text = "" Then
                    txtGrandTotal1.Text = CStr(total1)
    
                    '次の入力の為、終了時間を次回開始時間とし、流量をリセットする。
                    '終了時間が00:00であった場合、すべての値をクリアにしてフォーカスは開始時間にする
                    '(00:00なら次の日の計算が始まるため、開始時間からの入力となる)
                    If intEnd1 = 1440 Then
                        MsgBox("この日の総計は" & total1 & "Lです。" & vbCrLf & _
                               "OKを押すと数値がクリアされます。")
                        txtStartHour1.Text = "00"
                        txtStartMinutes1.Text = "00"
                        txtEndHour1.Text = "00"
                        txtEndMinutes1.Text = "00"
                        txtRyuryo1.Text = ""
                        txtTotal1.Text = ""
                        txtGrandTotal1.Text = ""
                        chkJinko1.Checked = False
                        txtO2noudo1.Text = ""
                        txtO2noudo1.ReadOnly = True
                        txtStartHour1.Focus()
                    Else
                        txtStartHour1.Text = txtEndHour1.Text
                        txtStartMinutes1.Text = txtEndMinutes1.Text
                        txtRyuryo1.Text = ""
                        chkJinko1.Checked = False
                        txtO2noudo1.Text = ""
                        txtO2noudo1.ReadOnly = True
                        txtEndHour1.Focus()
                    End If
    
                Else
    
                    'ここからは2回目以降の計算となる。
                    '2回目以降の計算は合計+総合計とする。
                    Dim grandtotal1 As Decimal
                    grandtotal1 = CDec(txtGrandTotal1.Text)
                    txtGrandTotal1.Text = CStr(total1 + grandtotal1)
    
                    '次の入力の為、終了時間を次回開始時間とし、流量をリセットする。
                    'なお、終了時間が00:00であった場合、すべての値をクリアにしてフォーカスは開始時間にする
                    '(00:00なら次の日の計算が始まるため、開始時間からの入力となるため)
                    If intEnd1 = 1440 Then
                        MsgBox("この日の総計は" & txtGrandTotal1.Text & "Lです。" & vbCrLf & _
                               "OKを押すと数値がクリアされます。")
                        txtStartHour1.Text = "00"
                        txtStartMinutes1.Text = "00"
                        txtEndHour1.Text = "00"
                        txtEndMinutes1.Text = "00"
                        txtRyuryo1.Text = ""
                        txtTotal1.Text = ""
                        txtGrandTotal1.Text = ""
                        chkJinko1.Checked = False
                        txtO2noudo1.Text = ""
                        txtO2noudo1.ReadOnly = True
                        txtStartHour1.Focus()
                    Else
                        txtStartHour1.Text = txtEndHour1.Text
                        txtStartMinutes1.Text = txtEndMinutes1.Text
                        txtRyuryo1.Text = ""
                        chkJinko1.Checked = False
                        txtO2noudo1.Text = ""
                        txtO2noudo1.ReadOnly = True
                        txtEndHour1.Focus()
                    End If
    
                End If
    
            End If
    
        End Sub
    
    魔界の仮面弁士様には本当に感謝しきれないほど、お世話になりました。
    shu様、とっちゃん様にもお世話になりました。
    
    これからもアプリを作っていこうと思いますが、また躓くこともありますので
    自力で調べてもわからない時は、またこちらでお世話になります。
    
    皆様、ありがとうございました。
記事No.72912 のレス / END /過去ログ122より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -