[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『簡略時刻入力方法』(タイムカード)
出勤時刻と退出時間を入力し残業数を割り出す為、表を作成しております。
ちょっとのことですが「:」を入力する手間を省きたいと思ってます。
質問を纏めますと…
・時刻を入力する時に「:」を入力せず、数字入力(例参照)だけで表示し、時刻としても認識出来るようにしたい。
・そのセル(時刻表示されたもの)は後で時刻計算に使いたい。
(例)
「900」(入力)→「9:00」(表示)、「1800」(入力)→「18:00」(表示)
わかりにくい説明ですみません。
宜しくお願いします。
入力した隣のセルに時刻を表示するのなら =TEXT(A1,"0!:00")*1 でシリアル値に変更して、セルの表示形式を時刻にする。
テンキーからの入力の手間軽減なら、 ツール→オートコレクトのオプションのオートコレクトタブで 修正文字列「..」→修正後文字列「:」 と設定する方法があります。 なお、「.」のみだと小数点などの入力時に不都合がでます。 または、いっそうのこと、データ出力が出来るタイムレコーダーを導入するとかしたらどうなんでしょう? この様な製品もあるようです。 http://timepack.amano.co.jp/products/index.html # Web検索で引っかかったものですので、そのほかにもいろいろあると思います。 (Hatch)
早々の回答ありがとうございます。
今表を触って入力して見たところ、ちゃんと表示・認識され、計算できました!!
ありがとうございました。
タイムレコーダー導入…これは会社が購入してくれないので(本当に残念ですが)無理なんです。
でも参考になりました。色々と本当にありがとうございました!!
こちらに統合しました。(kazu)
下でタイムカードさんが聞いているのと同じなのですが、「入力した隣のセルに時刻を表示する」ではなく「入力したセルに表示」させることはできますか?
例えば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.