Excel VBA質問箱 IV

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

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


7344 / 13644 ツリー ←次へ | 前へ→

【39662】時刻の変換 aaa 06/6/28(水) 16:15 質問[未読]
【39663】Re:時刻の変換 だるま 06/6/28(水) 16:31 回答[未読]
【39665】Re:時刻の変換 aaa 06/6/28(水) 16:47 質問[未読]
【39667】Re:時刻の変換 ハト 06/6/28(水) 17:05 回答[未読]
【39711】Re:時刻の変換 aaa 06/6/29(木) 14:34 お礼[未読]

【39662】時刻の変換
質問  aaa  - 06/6/28(水) 16:15 -

引用なし
パスワード
   簡単なことなのかもしれませんが、わかりませんので質問させていただきます。

B13に「30分」、B16に「120分」と入力されています。
これを計算に利用したいので時刻の値として「0:30:00」「2:00:00」とVBAで変換させたいと思い下記の方法を取りました。

Dim hd_split As Date
Dim hn_split As Date
  hd_split = TimeValue(ws.Range("B13").Text)
  hn_split = TimeValue(ws.Range("B16").Text)

しかし4行目の方で「型が一致しません」というエラーがでます。
3行目では「0:30:00」と認識しているのですが、120分だと2時間になるのでこのままでは無理そうです。
どうすれば「120分」を「2:00:00」と認識させることができるのでしょうか?
よろしくお願いします。    

【39663】Re:時刻の変換
回答  だるま WEB  - 06/6/28(水) 16:31 -

引用なし
パスワード
   timeserial関数を使われてはいかがでしょうか。^d^

【39665】Re:時刻の変換
質問  aaa  - 06/6/28(水) 16:47 -

引用なし
パスワード
   最初の質問とちょっと内容が変わってしまいましたので質問を少し変えます。

B13に30分、B16に120分と入力されています。
Aには日付と時刻を足したものが入っています。
これを数値として「30」「120」と認識させ、DateAdd関数を使ってその分を足したいのです。

Dim hd_split As Date
Dim hn_split As Date
dim A as Date
  hd_split = TimeValue(ws.Range("B13").Text)
  hn_split = TimeValue(ws.Range("B16").Text)
  A = DateAdd("n", hd_split, A)
  A = DateAdd("n", hn_split, A)

30分の方はうまくいくのですが、120分の方はうまくいきません。
どうすればいいのでしょうか?
質問の内容が変わってしまいましてすいません。
よろしくお願いします。

【39667】Re:時刻の変換
回答  ハト  - 06/6/28(水) 17:05 -

引用なし
パスワード
   こんにちは

▼aaa さん:
>最初の質問とちょっと内容が変わってしまいましたので質問を少し変えます。
>
>B13に30分、B16に120分と入力されています。
>Aには日付と時刻を足したものが入っています。
>これを数値として「30」「120」と認識させ、DateAdd関数を使ってその分を足したいのです。
>
>Dim hd_split As Date
>Dim hn_split As Date
>dim A as Date
>  hd_split = TimeValue(ws.Range("B13").Text)
>  hn_split = TimeValue(ws.Range("B16").Text)
>  A = DateAdd("n", hd_split, A)
>  A = DateAdd("n", hn_split, A)
>
>30分の方はうまくいくのですが、120分の方はうまくいきません。
>どうすればいいのでしょうか?
>質問の内容が変わってしまいましてすいません。
>よろしくお願いします。

そもそも120という値は TimeValue関数 では扱えません
DateAdd関数では

  A = DateAdd("n", 120, A)

のような指定でも処理できますから

>  hn_split = TimeValue(ws.Range("B16").Text)
       ↓
  hn_split = Val(ws.Range("B16").Text)

として試してみてください

【39711】Re:時刻の変換
お礼  aaa  - 06/6/29(木) 14:34 -

引用なし
パスワード
   ▼ハト さん:
こんにちは

ハトさんに教えていただいたこの方法すでに試していたのですがうまくいきませんでした。

hn_split = Val(ws.Range("B16").Text)

でも原因はわかりました。

Dim hn_split As Date

としていたのがおかしかったのです。

Dim hn_split As Integer

とすればできました。
ありがとうございました。

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