Excel VBA質問箱 IV

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

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


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

【44706】数式と書式をマクロで処理して数値だけ入力させる 計算機 06/11/29(水) 16:25 質問[未読]
【44707】Re:数式と書式をマクロで処理して数値だけ... 飛ばない豚 06/11/29(水) 16:47 回答[未読]
【44710】Re:数式と書式をマクロで処理して数値だけ... 計算機 06/11/29(水) 17:28 発言[未読]
【44712】Re:数式と書式をマクロで処理して数値だけ... awu 06/11/29(水) 17:43 回答[未読]
【44715】Re:数式と書式をマクロで処理して数値だけ... 計算機 06/11/29(水) 18:42 発言[未読]
【44717】Re:数式と書式をマクロで処理して数値だけ... awu 06/11/29(水) 19:32 回答[未読]
【44723】Re:数式と書式をマクロで処理して数値だけ... 計算機 06/11/30(木) 9:35 お礼[未読]
【44719】Re:数式と書式をマクロで処理して数値だけ... Mari 06/11/29(水) 21:11 発言[未読]
【44724】Re:数式と書式をマクロで処理して数値だけ... 計算機 06/11/30(木) 9:39 お礼[未読]

【44706】数式と書式をマクロで処理して数値だけ入...
質問  計算機  - 06/11/29(水) 16:25 -

引用なし
パスワード
   A2:開始時間 →(例 2000/11/29 00:12:23)
B2:終了時間 →(例 2000/11/29 00:15:23)
C2:所要時間(秒) →(例 180)

C2(B2−A2)を出すマクロを組みました。
C2には秒数で表示させたいのですが、
可視上では "180"となっていますが、
セルを選択すると "00:05:00"と表記されます。
可視同様、秒数の数値のみ結果を表示させるには、
どう記述を追加したらよいのかアドバイスください。

Sub 作業時間()
  Set WS1 = Worksheets("作業")
  With WS1.Range("A2", WS1.Range("A65536").End(xlUp)).Offset(, 2)
    .Formula = "=B2-A2"
    .NumberFormatLocal = "[s]"
    .Value = .Value
  End With
End Sub

【44707】Re:数式と書式をマクロで処理して数値だ...
回答  飛ばない豚  - 06/11/29(水) 16:47 -

引用なし
パスワード
   ▼計算機 さん:
ワークシート関数では、
=HOUR(B2-A2)*3600+MINUTE(B2-A2)*60+SECOND(B2-A2)
で算出できます。
(書式は「標準」または「数値」にて)

それでは。(^・ω・^)

【44710】Re:数式と書式をマクロで処理して数値だ...
発言  計算機  - 06/11/29(水) 17:28 -

引用なし
パスワード
   ▼飛ばない豚 さん:

回答ありがとうございました。
ですが、セルには日付も入っていますし
今の数式で大丈夫です。

質問が回りくどかったなら申し訳ありません。

C2に対して、
現状:可視では「180」だが、セルを選択すると「00:03:00」になっている
求めるもの:セルには数値として「180」と入力
を望んでいます。

アドバイスよろしくお願いします。
※質問では、例「00:05:00」となっていましたが、「00:03:00」の誤記です。
すいません。

【44712】Re:数式と書式をマクロで処理して数値だ...
回答  awu  - 06/11/29(水) 17:43 -

引用なし
パスワード
   こんな感じで如何でしょうか。

Sub 作業時間()
Dim WS1 As Worksheet
  Set WS1 = Worksheets("作業")
  With WS1.Range("A2", WS1.Range("A65536").End(xlUp)).Offset(, 2)
    .Formula = "=ROUND((B2-A2)*24*3600,0)"
    .Value = .Value
    .NumberFormatLocal = "G/標準"
  End With
End Sub

【44715】Re:数式と書式をマクロで処理して数値だ...
発言  計算機  - 06/11/29(水) 18:42 -

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

すいません、値のみ入力という希望は満たされたのですが、
数式部分がうまく合致しません。

終了時間は日付線を越えることもあるので、
実は今
 .Formula = IF(B2<A2,B2+1-A2,B2-A2)"

として使っています。
例題でB2-A2としていましたが、
まさかそこの数式をいじることはないだろうと
簡略して書いていました。
その辺を踏まえて、もう一度どうにかできないでしょうか?

今提示していただいたコードでは、時間計算がうまくできませんでした。

【44717】Re:数式と書式をマクロで処理して数値だ...
回答  awu  - 06/11/29(水) 19:32 -

引用なし
パスワード
   ▼計算機 さん:

>終了時間は日付線を越えることもあるので、
>実は今
> .Formula = IF(B2<A2,B2+1-A2,B2-A2)"
>
>として使っています。

うぅ〜ん。 当初提示した例を見る限り、セルA2とB2等は、「日付(時刻)形式」になっていて
「日にち」も入っていますので、そのようなことをしなくてもいいと思いますが・・・

もし、日にち部分を入力していないなら、先程のコードを応用すれば、出来ると思います。

    .Formula = "=ROUND( IF(A2>B2,B2+1-A2,B2-A2)*24*3600,0)"

【44719】Re:数式と書式をマクロで処理して数値だ...
発言  Mari  - 06/11/29(水) 21:11 -

引用なし
パスワード
   ▼計算機 さん:
貴殿のコードで・・・・・
問題なく180とC2に表示されますが
>A2:開始時間 →(例 2000/11/29 00:12:23)
>B2:終了時間 →(例 2000/11/29 00:15:23)
>C2:所要時間(秒) →(例 180)
>
>C2(B2−A2)を出すマクロを組みました。
>C2には秒数で表示させたいのですが、
>可視上では "180"となっていますが、

可視上では?とはどのようなことでしょうか
関数バーのところは・・・→0:03:00 と出ますが。

>セルを選択すると "00:05:00"と表記されます。
>可視同様、秒数の数値のみ結果を表示させるには、
>どう記述を追加したらよいのかアドバイスください。

【44723】Re:数式と書式をマクロで処理して数値だ...
お礼  計算機  - 06/11/30(木) 9:35 -

引用なし
パスワード
   ▼awu さん:
できました!!

昨日は提示していただいた数式で、何度やっても
「2006/10/10 16:01:00」- 「2006/10/10 16:00:00」= "60"
ではなく、"5184000" , 日付でいうと"1900/2/29 0:00:00"の結果になってしまってうまくいきませんでしたが、
今朝試してみたらうまくいきました!!
何か別のコードが入っていたのだと思います。
原因は不明のままですが、うまくいったのでよしとします。
本当にありがとうございました。

【44724】Re:数式と書式をマクロで処理して数値だ...
お礼  計算機  - 06/11/30(木) 9:39 -

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

表現が不適切で申し訳ません。
可視上とは、セルでの表示のことです。
ご指摘のとおり関数バーで"0:03:00"と出てしまうので、
セル同様"180"と表示させたかったのですが、無事解決しました。
ありがとうございました。

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