[[20050826105400]] 『簡略時刻入力方法』(タイムカード) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『簡略時刻入力方法』(タイムカード)

出勤時刻と退出時間を入力し残業数を割り出す為、表を作成しております。
ちょっとのことですが「:」を入力する手間を省きたいと思ってます。

質問を纏めますと…

・時刻を入力する時に「:」を入力せず、数字入力(例参照)だけで表示し、時刻としても認識出来るようにしたい。

・そのセル(時刻表示されたもの)は後で時刻計算に使いたい。

(例)
「900」(入力)→「9:00」(表示)、「1800」(入力)→「18:00」(表示)

わかりにくい説明ですみません。
宜しくお願いします。


 入力した隣のセルに時刻を表示するのなら
 =TEXT(A1,"0!:00")*1 でシリアル値に変更して、セルの表示形式を時刻にする。

 テンキーからの入力の手間軽減なら、
ツール→オートコレクトのオプションのオートコレクトタブで
修正文字列「..」→修正後文字列「:」 と設定する方法があります。
なお、「.」のみだと小数点などの入力時に不都合がでます。
 
 または、いっそうのこと、データ出力が出来るタイムレコーダーを導入するとかしたらどうなんでしょう?
 この様な製品もあるようです。
http://timepack.amano.co.jp/products/index.html
 # Web検索で引っかかったものですので、そのほかにもいろいろあると思います。
  (Hatch)


Ha.tch様

早々の回答ありがとうございます。
今表を触って入力して見たところ、ちゃんと表示・認識され、計算できました!!
ありがとうございました。

タイムレコーダー導入…これは会社が購入してくれないので(本当に残念ですが)無理なんです。
でも参考になりました。色々と本当にありがとうございました!!


 こちらに統合しました。(kazu)


『簡略時刻入力方法2』(便乗すいませ)

下でタイムカードさんが聞いているのと同じなのですが、「入力した隣のセルに時刻を表示する」ではなく「入力したセルに表示」させることはできますか?
例えば700と入力し7:00と出力なのですが。
入力するのがそれぞれのパソコンなのでツールからの設定はできません。
お願いします。


 必ず4桁で入力し、セルの書式設定を
 ユーザー定義で

 00":"00

 としてはいかがでしょう?
 ※時刻としては認識しません。
 (MARBIN)

ありがとうございます。なるほど、こう言う方法もあるんですね!勉強になりす。
または時刻として認識させる方法はあるものでしょうか?


 安直な方法ですが・・・。

 ワークシートモジュールに↓を記述して
 マクロで変換、はいかがでしょう?
 ※Targetは限定していません。

 Private Sub Worksheet_Change(ByVal Target As Range)
  Dim s As String
   Application.EnableEvents = False
   s = Target.Value
   Target.Clear
   Target.NumberFormatLocal = "h:mm;@"
     Target.Value = Left(s, 2) & ":" & Right(s, 2)
     Application.EnableEvents = True
 End Sub
 (MARBIN)

マクロですね! 実はマクロは1度しか使った事がなく、、、確認なのですが、
Alt+F11、左にあるボックスで該当するシート名を選択し、挿入、標準モジュールで真っ白いページを出す、そこに↑を貼り付けすればよいのでしょうか。
うーん、何かが違います。何だか出来ません


 シートモジュールの出し方、です。

 Alt + F11 でVBE画面を出し、
 左側ツリー構造の中の対象のシート
 Sheet (Sheet1)などをWクリックし
 たら出てきます。
 (MARBIN)

Wクリックで出てきました。そこに貼り付けをし、ファイルから、エクセルへ戻るを選んで戻りました。この状態で、700と入力をすれば時間に換わるのでしょうか?ならないのですが、、何度もすいません。


 >ならないのですが

 何も起こらない、ということでしょうか?
 それとも意図しない時刻に変換される、
 ということでしょうか?

 先ほどのコードでは3桁で入力した場合
 エラーが起きますね。
 ↓でお試しください。

 Private Sub Worksheet_Change(ByVal Target As Range)
  Dim s As String
   Application.EnableEvents = False
   If Len(Target) = 3 Then
    s = 0 & Target.Value
   Else
    s = Target.Value
   End If
   Target.Clear
   Target.NumberFormatLocal = "h:mm;@"
     Target.Value = Left(s, 2) & ":" & Right(s, 2)
     Application.EnableEvents = True
 End Sub
 (MARBIN)

再びありがとうございます。
再度教えていただいた↑を貼り付けしましたが、書式設定で時間、00:00を選んでいるところでは、700を入れると0:00に、何の書式も設定していないセルに入れると700となってしまうのですが、、、


 マクロ起動確認を付け加えました。
 ↓のコードで試して"マクロ起動"と出なかったら
 マクロが起動していません。
 マクロは有効にしてますよね?
 シートモジュール以外のところに
 貼り付けてませんか?
 ※このマクロは、もともとの書式設定が標準
 になってないとエラーになります。

 Private Sub Worksheet_Change(ByVal Target As Range)
  Dim s As String
   MsgBox "マクロ起動"
   Application.EnableEvents = False
   If Len(Target) = 3 Then
    s = 0 & Target.Value
   Else
    s = Target.Value
   End If
   Target.Clear
   Target.NumberFormatLocal = "h:mm;@"
     Target.Value = Left(s, 2) & ":" & Right(s, 2)
     Application.EnableEvents = True
 End Sub

 一応念のため、標準モジュールに↓のコードを
 貼り付け、コードを実行してから上記のマクロ
 を起動させてみてください。

 Sub イベント有効化()
  Application.EnableEvents = True
 End Sub
 (MARBIN)

統合されていたのに気づかず、管理人さんお手数おかけしました。

MARBINさんできました!ありがとうございます!

やはりマクロが起動していませんでしたm(__)m


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.