Excel VBA質問箱 IV

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

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


10 / 13080 ツリー ←次へ | 前へ→

【79599】VBA 時間集計 初心者CORAZON 18/2/1(木) 10:41 質問[未読]

【79601】Re:VBA 時間集計 初心者CORAZON 18/2/1(木) 14:39 発言[未読]
【79602】Re:VBA 時間集計 γ 18/2/1(木) 22:50 回答[未読]
【79605】Re:VBA 時間集計 初心者CORAZON 18/2/2(金) 8:07 発言[未読]
【79606】Re:VBA 時間集計 γ 18/2/2(金) 22:36 発言[未読]

【79601】Re:VBA 時間集計
発言  初心者CORAZON  - 18/2/1(木) 14:39 -

引用なし
パスワード
   ▼γ さん:
>>VBA側で試してみても、中間フィールドの設定により
>>型が違いますとなります。
>
>現時点のコードを提示して下さい。
ご連絡ありがとうございます。

抜粋すると以下の内容です。

ZAN の値が 24時間のとき outsh.Cells(Y, 7).Value が 
0となります (1900/1/1 0:0:0 ?)
prefsh.Cells(x, 7).Valueとoutsh.Cells(Y, 7).Valueの
帳票EXCEL の書式が [h]:mm です。

---------

 Dim Y As Long
 Dim zan As Date  ← AS Long に変更するとタイプがエラー

 Dim shin As Date
'
 〜途中略〜
'
  If oldcd = prefsh.Cells(x, 1).Value Then
    'その行の 残業・深夜時間
    zan = zan + CDate(prefsh.Cells(x, 7).Value)
    shin = shin + CDate(prefsh.Cells(x, 8).Value)
   Else
 
〜途中略〜
  '結果を保存
  outsh.Cells(Y, 7).Value = zan

【79602】Re:VBA 時間集計
回答  γ  - 18/2/1(木) 22:50 -

引用なし
パスワード
   > ZAN の値が 24時間のとき outsh.Cells(Y, 7).Value が 
> 0となります (1900/1/1 0:0:0 ?) 
0ではありません。   
24時間は、整数の1と同じです。
そして、日付型は、1900/1/1 を起点(1) としてカウントする決まりです。
ですから、数式バー? には、1900/1/1 0:00:00 と表示されて正常です。

また、2 は、1900/1/2 0:00:00 と数式バーには表示されます。
そして、そのセルの書式を[h]:mm としておけば、
そのセルは 48:00 と表示されるはずです。

何も問題がありません。

【79605】Re:VBA 時間集計
発言  初心者CORAZON  - 18/2/2(金) 8:07 -

引用なし
パスワード
   ▼γ さん:
>> ZAN の値が 24時間のとき outsh.Cells(Y, 7).Value が 
>> 0となります (1900/1/1 0:0:0 ?) 
>0ではありません。   
>24時間は、整数の1と同じです。
>そして、日付型は、1900/1/1 を起点(1) としてカウントする決まりです。
>ですから、数式バー? には、1900/1/1 0:00:00 と表示されて正常です。
>
>また、2 は、1900/1/2 0:00:00 と数式バーには表示されます。
>そして、そのセルの書式を[h]:mm としておけば、
>そのセルは 48:00 と表示されるはずです。
>
>何も問題がありません。

いろいろとありがとうございます。

では、数式バーは 1900/1/1 0:00:00 となった場合
最終セルには 0:00 となってしまいます。 
結論は 24 と表示したいのです。(残業時間 24時間 に意味)
方法はありませんか?

48時間の場合 42 と表記されました。
そのほかの時間も問題なく表記されます。 

無理を言いますがお教えください。

【79606】Re:VBA 時間集計
発言  γ  - 18/2/2(金) 22:36 -

引用なし
パスワード
   >また、2 は、1900/1/2 0:00:00 と数式バーには表示されます。
>そして、そのセルの書式を[h]:mm としておけば、
>そのセルは 48:00 と表示されるはずです。
そうならないのは、「なぞなぞ」のようで解りかねます。

普通では考えられないことが起きているときは、
・それぞれのセルの位置に何を入力したのかを説明し、
・省略しないコードを一式提示する
ことによって、
他人が「その状況を再現できる」ようにすることが必要です。

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