Excel VBA質問箱 IV

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

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


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

【67332】時間計算について TAC 10/11/25(木) 17:43 質問[未読]
【67336】Re:時間計算について Hirofumi 10/11/25(木) 19:58 発言[未読]
【67338】Re:時間計算について よろずや 10/11/26(金) 0:06 回答[未読]
【67342】Re:時間計算について TAC 10/11/26(金) 14:04 お礼[未読]
【67357】Re:時間計算について TAC 10/11/27(土) 11:25 質問[未読]
【67358】Re:時間計算について よろずや 10/11/27(土) 21:29 発言[未読]
【67371】Re:時間計算について TAC 10/11/29(月) 9:56 お礼[未読]

【67332】時間計算について
質問  TAC  - 10/11/25(木) 17:43 -

引用なし
パスワード
   現在、出勤簿を作成しているのですが
(以前もお世話になりましたm(__)m)、

「出勤時間」「退社時間」の入力セルの表示形式を
ユーザ定義で「[h]:mm」と設定しています。
これは「午前1時」を「25:00」といった入力体系にしたいためです。

この値を利用してプログラム内にて
「25:00」(退出時間) −「9:30」(出勤時間) −「1:15」(休憩時間)
といった超勤時間の計算を行っています。(休憩時間は固定値)

ここでひとつ修正したい点があるのですが、
入力者側から
「時間入力の際に":"を打つのが面倒くさい」
という意見があり、
入力セルの表示形式を今までの「[h]:mm」から「00":"00」に
変更して入力体系の修正を行いました。
ただこの後、入力値から一度シリアル値にして最後にDate形式に
置き換える方法などを試みたのですが、どれもうまくいきません。
(「25:00」とプログラム内で置き換えれない。
 またはシリアル値と「1:00」といった固定値が混在して計算ができない。等)

まず根本にこのやり方ではたして正しいのかという疑問もあるのですが、
何かいい解決案・別案等がありましたら、
何卒よろしくお願いいたします。

【67336】Re:時間計算について
発言  Hirofumi  - 10/11/25(木) 19:58 -

引用なし
パスワード
   第1案、後で処理するマクロ内で以下の様にシリアル値に変換する

Public Sub Test1()

  Dim vntData As Variant
  
  vntData = Range("A1").Value
  
  vntData = TimeSerial(vntData \ 100, vntData Mod 100, 0)
  
  MsgBox vntData
  
End Sub

第2案、シートの「Sub Worksheet_Change」で入力時にシリアル値に変換
(セル書式は「[h]:mm」形式)

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

  Dim vntData As Variant
  
  With Target
    If Not (.Row = 1 And .Column = 1 And .Count = 1) Then
      Exit Sub
    End If
    vntData = Target.Value2
  End With
  
  vntData = TimeSerial(vntData \ 100, vntData Mod 100, 0)
  
  Application.EnableEvents = False
  Target.Value = vntData
  Application.EnableEvents = True
    
End Sub

では?

【67338】Re:時間計算について
回答  よろずや  - 10/11/26(金) 0:06 -

引用なし
パスワード
   >「時間入力の際に":"を打つのが面倒くさい」

Excel のオートコレクト機能に
「..」→「:」を登録しておくと
テンキーだけで入力できます。

【67342】Re:時間計算について
お礼  TAC  - 10/11/26(金) 14:04 -

引用なし
パスワード
   ご回答いただきまして、ありがとうございます。

よろずや様

テンキーのないPCが混在してるため
「..」入力方式は今後の参考にさせていただきます。
ご助言いただきありがとうございます。


Hirofumi様

マクロ内でシリアル値に変換する方法を試させていただきました。
うまく思った通りの動作をさせることができました。
ありがとうございます。
固定値(例:休憩時間「1:15」)は
vntData = TimeSerial(115 \ 100, 115 Mod 100, 0)
といった形にして統一して、時間計算させることができました。

以上、お二方ありがとうございました!

【67357】Re:時間計算について
質問  TAC  - 10/11/27(土) 11:25 -

引用なし
パスワード
   すみません、引き続き別の質問になりますが、
よろしくお願いします。

WorkSheet Changeイベントについてなのですが、
Macintosh版のExcle上にて、Windowsで作成した出金簿VBAを使用しますと、
大体の動作はうまく行えるのですが、
入力規則で「リスト」形式にしてるセルの値を変更しても
WorkSheet_Changeイベントが発生してくれません。

これはMac版VBAの仕様なのでしょうか?

どうぞよろしくお願いいたします。

【67358】Re:時間計算について
発言  よろずや  - 10/11/27(土) 21:29 -

引用なし
パスワード
   別質問は別に立てた方がよろしいかと。

【67371】Re:時間計算について
お礼  TAC  - 10/11/29(月) 9:56 -

引用なし
パスワード
   ▼よろずや さん:
>別質問は別に立てた方がよろしいかと。

ご助言ありがとうございます。
別途立て直させていただきますm(__)m

よろしくお願いします。

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