コンボボックスについて
投稿者 るしぇ  (社会人)
投稿日時
2009/8/6 21:53:38
時間の計算は小学校3年の算数らしいですが。。。
小数の学習が小学校4年。ということは小学校5年くらいの
算数ドリルにはあっても不思議でない内容です。
http://www.sangan.jp/grade/m61-a1.htm
VBと直接関係の無い知識については、その分野を扱った
サイトで学習することをお勧めします。
(19 - 9) + (0 - 30) ÷ 60 = 9.5
日付が変わるような計算はもう一工夫必要ですね。
小数の学習が小学校4年。ということは小学校5年くらいの
算数ドリルにはあっても不思議でない内容です。
http://www.sangan.jp/grade/m61-a1.htm
VBと直接関係の無い知識については、その分野を扱った
サイトで学習することをお勧めします。
(19 - 9) + (0 - 30) ÷ 60 = 9.5
日付が変わるような計算はもう一工夫必要ですね。
投稿者 るきお  (社会人)
投稿日時
2009/8/6 22:16:27
こんにちは。
理屈はるしぇさんの式のとおりです。
VBで表現すると次のようになります。
VB(やC#)では日付・時刻が扱いやすいような工夫もいろいろあって、
時間の引き算はDateTime.Subtractメソッドで行うこともできます。
Subtractメソッドなら日付が変わってもいけますが、その場合はtime1とtime2にTimeSerialではなく、
New Date()などで日付付きで値をセットする必要があります。
なのではじめからTimeSerialなど使わずにNew Dateにして置けばよいのですが、時・分・秒だけ見るとTimeSerialの方が直感的なので上記の例では採用しました。
他にもいろいろな書き方があります。ここで紹介したのは一例です。
理屈はるしぇさんの式のとおりです。
VBで表現すると次のようになります。
Dim hour1 As Integer = cmb_h1.Text
Dim hour2 As Integer = cmb_h2.Text
Dim minute1 As Integer = cmb_m1.Text
Dim minute2 As Integer = cmb_m2.Text
'(19 - 9) + (0 - 30) ÷ 60 = 9.5
TextBox1.Text = (hour2 - hour1) + (minute2 - minute1) / 60
VB(やC#)では日付・時刻が扱いやすいような工夫もいろいろあって、
時間の引き算はDateTime.Subtractメソッドで行うこともできます。
Dim time1 As Date = TimeSerial(cmb_h1.Text, cmb_m1.Text, 0)
Dim time2 As Date = TimeSerial(cmb_h2.Text, cmb_m2.Text, 0)
TextBox1.Text = time2.Subtract(time1).TotalHours
Subtractメソッドなら日付が変わってもいけますが、その場合はtime1とtime2にTimeSerialではなく、
New Date()などで日付付きで値をセットする必要があります。
なのではじめからTimeSerialなど使わずにNew Dateにして置けばよいのですが、時・分・秒だけ見るとTimeSerialの方が直感的なので上記の例では採用しました。
他にもいろいろな書き方があります。ここで紹介したのは一例です。
ただいま、VB6.0において、コンボボックスを使って時間計算をしております。
フォームにコンボボックスを4つ配置、テキストボックスを1つ配置。
cmb_h1 時 cmb_m1 分
(1~24が選択可能) (00、30が選択可能)
cmb_h2 時 cmb_m2 分
(1~24が選択可能) (00、30が選択可能)
text1 時間
そこで質問なのですが、
cmb_h1 時 cmb_m1 分 (9:30)
(9) (30)
cmb_h2 時 cmb_m2 分 (19:00)
(19) (30)
と選択した際、text1には
text1
(9.5) 時間
と表示させたいのですが、どう処理をすればよいのでしょうか?
コンボボックスが2つの場合の引き算などはできたのですが、
コンボボックスが4つとなるとまったくお手上げです。
コンボボックス2つで引き算をしたときは、
変数A、B、Cを3つ作って、
cmb_h1で入力した数字を変数Aへ。
cmb_h2で入力した数字を変数Bへ。
text1にAからBを引いた変数Cを格納。
といった具合に書きました。
ただいま勉強中ですので説明不足と知識不足は否めません。
言葉足らずですみません。
なにとぞご教示のほど、よろしくお願いいたします。