Excel VBA質問箱 IV

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

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


4610 / 13646 ツリー ←次へ | 前へ→

【55603】テキストボックスの計算 DA 08/5/13(火) 16:11 発言[未読]
【55608】Re:テキストボックスの計算 Jaka 08/5/13(火) 17:12 発言[未読]
【55624】Re:テキストボックスの計算 DA 08/5/14(水) 10:37 お礼[未読]
【55626】Re:テキストボックスの計算 DA 08/5/14(水) 10:51 質問[未読]
【55627】Re:テキストボックスの計算 neptune 08/5/14(水) 11:11 回答[未読]
【55634】Re:テキストボックスの計算 DA 08/5/14(水) 13:13 質問[未読]
【55638】Re:テキストボックスの計算 わいわい 08/5/14(水) 13:53 発言[未読]
【55640】Re:テキストボックスの計算 neptune 08/5/14(水) 14:16 発言[未読]
【55641】Re:テキストボックスの計算 Yuki 08/5/14(水) 14:23 発言[未読]
【55664】Re:テキストボックスの計算 DA 08/5/14(水) 19:09 お礼[未読]

【55603】テキストボックスの計算
発言  DA  - 08/5/13(火) 16:11 -

引用なし
パスワード
   テキストボックスが3つあります。
そのうち2つに時間を入れます。(2:00)←こういった感じで

そして、3つ目のテキストボックスに1,2で入力した時間の合計が表示されるようなものを作りたいのですが、

TextBox1.Text = Val(txt時間内A1.Text) + Val(txt時間内A2.Text)

この形式で行うと、数字として表示されてしまい、時間として出てきません。
初歩的な質問で申し訳ありませんが、アドバイスお願いいたします。

【55608】Re:テキストボックスの計算
発言  Jaka  - 08/5/13(火) 17:12 -

引用なし
パスワード
   細かいところは調整してください。

MsgBox Format(TimeValue("1:00") + TimeValue("1:30"), "hh:mm")

【55624】Re:テキストボックスの計算
お礼  DA  - 08/5/14(水) 10:37 -

引用なし
パスワード
   どうもありがとうございました。
参考にさせていただきます。

【55626】Re:テキストボックスの計算
質問  DA  - 08/5/14(水) 10:51 -

引用なし
パスワード
   すみません・・・また躓きました。。

Private Sub cmd時間内A_Click()

MsgBox Format(TimeValue(txt時間内A1.Text) + TimeValue(txt時間内A2.Text)+ TimeValue(txt時間内A3.Text)+ TimeValue(txt時間内A4.Text), "hh:mm")
end sub

変形して使わせていただきましたが、この場合全てに時間が記載されていないとエラーが出てしまうのですが・・・空白のテキストボックスがあったらそこは無視して計算を行うようにする方法はあるんでしょうか・・・?

【55627】Re:テキストボックスの計算
回答  neptune  - 08/5/14(水) 11:11 -

引用なし
パスワード
   ▼DA さん:
こんにちは
>MsgBox Format(TimeValue(txt時間内A1.Text) + TimeValue(txt時間内A2.Text)+ TimeValue(txt時間内A3.Text)+ TimeValue(txt時間内A4.Text), "hh:mm")
>変形して使わせていただきましたが、この場合全てに時間が記載されていないとエラーが出てしまうのですが・・・空白のテキストボックスがあったらそこは無視して計算を行うようにする方法はあるんでしょうか・・・?
いくらでもありますが、処理の手順として、
例えば
dim st1 as string
dim t1 as date

st1=txt時間内A1.Text
'本当はもっとチェックすべきですが、とりあえず、数値と判断できるかの判断
'キチンと想定された時間帯であるとかの判断も本当はすべきですね。
if isnumeric(st1) then
  t1=cdate(t1)
else
  'exit sub '処理を止める場合
  t1=0
end if
以下省略。

こんな感じで書いてみて下さい。
#べた書きなんで綴り間違えてたらごめんなさい。でも考え方の手順は
参考になるかと思います。

【55634】Re:テキストボックスの計算
質問  DA  - 08/5/14(水) 13:13 -

引用なし
パスワード
   度々申し訳ありません。。
一応参考にプログラムしてみたのですが、何度か試したのですが時間が入力してもメッセージが0:00になってしまうのですが・・・

Dim sta1 As String
Dim sta2 As String
Dim sta3 As String

Dim ta1 As Date
Dim ta2 As Date
Dim ta3 As Date

Private Sub cmd時間内A_Click()

    sta1 = txt時間内A1.Text
    sta2 = txt時間内A2.Text
    sta3 = txt時間内A3.Text

MsgBox Format(TimeValue(ta1) + TimeValue(ta2) + TimeValue(ta3),"hh:mm")

      If IsNumeric(sta1) Then
    ta1 = CDate(ta1)
  Else
    ta1 = 0
  End If
  
      If IsNumeric(sta2) Then
    ta2 = CDate(ta2)
  Else
    ta2 = 0
  End If
  
      If IsNumeric(sta3) Then
    ta3 = CDate(ta3)
  Else
    ta3 = 0
  End If

すみませんがご指摘いただけたら光栄です。
お願いします。

【55638】Re:テキストボックスの計算
発言  わいわい  - 08/5/14(水) 13:53 -

引用なし
パスワード
   DA さんこんにちわ

>Dim sta1 As String


宣言が
>Private Sub cmd時間内A_Click()
より上にあるのが気になりますが・・・。


MsgBox Format(TimeValue(sta1) + TimeValue(sta2) + TimeValue(sta3),"hh:mm")

ですよね?

【55640】Re:テキストボックスの計算
発言  neptune  - 08/5/14(水) 14:16 -

引用なし
パスワード
   ▼DA さん:
>度々申し訳ありません。。
>一応参考にプログラムしてみたのですが、何度か試したのですが時間が入力してもメッセージが0:00になってしまうのですが・・・

このケースでは普通はこう書きます。
>Private Sub cmd時間内A_Click()
Dim sta1 As String
Dim sta2 As String
Dim sta3 As String
Dim ta1 As Date
Dim ta2 As Date
Dim ta3 As Date

>    sta1 = txt時間内A1.Text
>    sta2 = txt時間内A2.Text
>    sta3 = txt時間内A3.Text
>
ここにmsgboxを置いても、ta1〜3にはデータが代入されていないので
>何度か試したのですが時間が入力してもメッセージが0:00になってしまうのでが・・・
は全く正常な処理。
>
>      If IsNumeric(sta1) Then
>    ta1 = CDate(ta1)
>  Else
>    ta1 = 0
>  End If
>  
>      If IsNumeric(sta2) Then
>    ta2 = CDate(ta2)
>  Else
>    ta2 = 0
>  End If
>  
>      If IsNumeric(sta3) Then
>    ta3 = CDate(ta3)
>  Else
>    ta3 = 0
>  End If
MsgBox Format(ta1 + ta2 + ta3,"hh:mm")

自分が何をしているか理解した上でプログラムは動かしましょう。
プログラムは命令されたとおりしか動きませんから。
大怪我の元です。

#インデントもキチンとしましょう。これも間違いの元です。

【55641】Re:テキストボックスの計算
発言  Yuki  - 08/5/14(水) 14:23 -

引用なし
パスワード
   ▼DA さん:

こんな感じでどうでしょう。
  Dim t1 As Date
  Dim i  As Long
  
  For i = 1 To 3
    If IsDate(Me.Controls("txt時間内A" & i).Value) Then
      t1 = t1 + TimeValue(Me.Controls("txt時間内A" & i).Value)
    End If
  Next
  MsgBox Format(t1, "hh:mm")

【55664】Re:テキストボックスの計算
お礼  DA  - 08/5/14(水) 19:09 -

引用なし
パスワード
   いろいろご指摘ありがとうございます。

すみません。。基本からもっと勉強します。

参考にさせていただきます。
どうもありがとうございました。

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