コンボボックスについて への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 るしぇ  (社会人)
投稿日時
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 20:29:11
いつも拝見しております。
ただいま、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を格納。
といった具合に書きました。
ただいま勉強中ですので説明不足と知識不足は否めません。
言葉足らずですみません。
なにとぞご教示のほど、よろしくお願いいたします。
ただいま、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を格納。
といった具合に書きました。
ただいま勉強中ですので説明不足と知識不足は否めません。
言葉足らずですみません。
なにとぞご教示のほど、よろしくお願いいたします。
理屈はるしぇさんの式のとおりです。
VBで表現すると次のようになります。
VB(やC#)では日付・時刻が扱いやすいような工夫もいろいろあって、
時間の引き算はDateTime.Subtractメソッドで行うこともできます。
Subtractメソッドなら日付が変わってもいけますが、その場合はtime1とtime2にTimeSerialではなく、
New Date()などで日付付きで値をセットする必要があります。
なのではじめからTimeSerialなど使わずにNew Dateにして置けばよいのですが、時・分・秒だけ見るとTimeSerialの方が直感的なので上記の例では採用しました。
他にもいろいろな書き方があります。ここで紹介したのは一例です。