Excel VBA質問箱 IV

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

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


577 / 13645 ツリー ←次へ | 前へ→

【79599】VBA 時間集計 初心者CORAZON 18/2/1(木) 10:41 質問[未読]
【79600】Re:VBA 時間集計 γ 18/2/1(木) 12:51 発言[未読]
【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 発言[未読]

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

引用なし
パスワード
   VBA初心者です。
よろしくお願いします。

時間集計に困っています。
EXCELシートで 時間のフィールドの時間集計を行います。
担当者ごとの集計でコントロールブレイクを掛けていますので
担当者が変わるまで中間集計をして、担当者が変われば
別のシートの集計エリアにセットします。
別シートの貼り付けたとき、結果表示がうまくいきません。
24時間、48時間 等の場合 ゼロになります。
(日付・時間が混在しているような気がします。)

1.元のシートのセル 時間セル (書式[h]:mm)
2.VBA集計時(担当者が変わるまで)
  中間フィールド ZAN ( as date)
  ZAN = ZAN + cdate(時間セル)
3.担当者変った時セットする セル (書式[h]:mm)

VBA側で試してみても、中間フィールドの設定により
型が違いますとなります。
 
なにかアドバイスがあればお手数をお掛けしますが
よろしくお願いします。

【79600】Re:VBA 時間集計
発言  γ  - 18/2/1(木) 12:51 -

引用なし
パスワード
   >VBA側で試してみても、中間フィールドの設定により
>型が違いますとなります。

現時点のコードを提示して下さい。

【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 と表示されるはずです。
そうならないのは、「なぞなぞ」のようで解りかねます。

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

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